终端操作MySQL数据库的指令,包括增删改查及各种键约束
程序员文章站
2022-03-03 22:26:25
...
localhost服务器可以建立数据库,数据库可以放很多数据表。
mySQL是关系型数据库,使用的是SQL语言。
1.终端操作必备指令
登录服务器
mysql -uroot -padmin
创建数据库
create database test;//(test为数据库的名字)
查看数据库
show databases;(加分号)
要对数据库或者数据表进行操作,首先要选中一个数据库
use jdbctest
显示所有数据表
show tables;
创建数据表
mysql> CREATE TABLE users(
-> name VARCHAR(20),
-> birth DATE,
-> sex CHAR(1));
Query OK, 0 rows affected (0.04 sec)
查看数据表的结构,两种方法
mysql> describe users;
mysql> desc users;
查询语句
select * from students;//也可以使用select * from students where id =1;("id" 和自己数据表的键名要一致,除了等于也可以用大于小于等选定范围)
向数据表中添加数据记录
mysql> INSERT INTO users
-> VALUES('qumengyao','1996-03-18','g');
修改某条数据的值
mysql> UPDATE users SET money ='176.90'WHERE name='qumengyao';
删除一条数据
mysql> delete from users where name='曲梦瑶';
删除一列数据
mysql> alter table userInfo5 drop column name;//删除名为name 的一列数据
删除数据库
mysql> drop database RUNOOB;
删除数据表
DROP TABLE table_name ;
退出数据库服务器
exit;
2.DECIMAL(M,D)的使用——金钱等高精度场景
DECIMAL(M,D):M表示数据存储的最长位数,D表示小数点后的位数
向原来的数据表中插入一列数据+DECIMAL(M,D)的使用:适合用于金钱等需要保持较高精度的地方
mysql> ALTER TABLE users
-> ADD money DECIMAL(6,2)//设置最长位数是6,小数的长度是2
-> ;
修改新加数据列的值
mysql> UPDATE users SET money ='176.90'WHERE name='qumengyao';
mysql> UPDATE users SET money ='1767.90'WHERE name='曲梦瑶';//如果超过了 DECIMAL的M值,则会报错。
mysql> select * from users;
+-----------+------------+------+---------+
| name | birth | sex | money |
+-----------+------------+------+---------+
| qumengyao | 1996-03-18 | g | 176.90 |
| 曲梦瑶 | 1993-03-18 | g | 1767.90 |
+-----------+------------+------+---------+
3.常用约束指令
(1)主键约束
主键不重复且不能为空,主键用来唯一的确定一条记录
mysql> alter table users add primary key(id);//把一个键设为主键约束
如果设定两个主键,作为联合主键,只要各主键值加起来不重复并且任一主键值不为空。
删除主键:
alter table table_name drop primary key;
修改主键约束
alter table table_name modify id int primary key;
(2)自增约束
要把某一列设置为自增约束,首先要保证是一个键。
把主键改为自增约束
mysql> alter table users change id id int AUTO_INCREMENT;
(3)唯一约束
约束修饰的字段的值不可以重复
两种方式在将原来的键设置为唯一约束:
alter table table_name add unique(name);
alter table table_name modify name varchar(20) unique;
创建表的时候设置为unique,两种方式:
name VARCHAR(20) unique
name VARCHAR(20),
unique(name, , , )//可以设定多个键为唯一约束,键的值组合在一起不重复就可以
删除唯一约束
alter table table_name drop index name;
(4)非空约束:
修饰的字段不能为NULL
创建的时候设定:
name varchar(20) not null
(5)默认约束
插入字段值的时候,如果没有传值,就会使用默认值
name varchar(20) default '123456';//这里不加引号也可以
修改默认值,使用modify
mysql> alter table userInfo5 modify password varchar(20) default '123456';
(6)外键约束
涉及到两个表:父表和子表
子表中的某个键关联父表中的某个键,这个键称为子表的外键,要保证:
(1)两个键数据类型相同;
(2)在子表中,设定外键的值时,要保证,外键的值在父表中是存在的。
(3)如果父表中的记录被子表使用,是不可以被删除的。
举例:
mysql> create table classes(
-> id int primary key auto_increment,
-> teacher varchar(20) not null);
mysql> create table class_1(
-> stu_id int primary key auto_increment,
-> stu_name varchar(20) not null,
-> unique(stu_name));
//为class_1表添加外键约束
mysql> alter table class_1 add class_i int;
mysql> alter table class_1 add foreign key(class_i) references classes(id);
向classes中insert数据
mysql> select * from classes;
+----+---------+
| id | teacher |
+----+---------+
| 1 | zhao |
| 2 | qian |
| 3 | sun |
| 4 | li |
+----+---------+
向class_1插入数据
mysql> insert into class_1 (stu_name,class_is) values ('xiaowang',1);
mysql> insert into class_1 (stu_name,class_is) values ('xiaoming',1);
mysql> insert into class_1 (stu_name,class_is) values ('xiaozhao',1);
mysql> insert into class_1 (stu_name,class_is) values ('xiaohua',1);
mysql> select * from class_1;
+--------+----------+----------+
| stu_id | stu_name | class_is |
+--------+----------+----------+
| 1 | xiaowang | 1 |
| 2 | xiaoming | 1 |
| 3 | xiaozhao | 1 |
| 4 | xiaohua | 1 |
+--------+----------+----------+