Mysql基本命令

基本命令

1.显示数据库
2.创建/删除/选择数据库
3.显示数据库引擎
4.创建基本表
5.主键约束、外键约束、非空约束、唯一性约束、默认约束
6.查看数据表结构
7.修改数据表包括以下6项
1.修改表名
2.修改字段数据类型或字段名
3.增加/删除字段
4.修改字段的排列位置
5.更改表的存储引擎
6.删除表的外键约束

具体ctrl+f搜索

1#基本命令
  2SHOW DATABASES;
  3
  4CREATE DATABASE test1;
  5
  6DROP DATABASE test1;
  7
  8SHOW ENGINES;
  9
 10# 创建、删除
 11CREATE DATABASE zoo;
 12
 13SHOW DATABASES;
 14
 15USE zoo;
 16
 17DROP DATABASE tb_tmp1;
 18
 19SHOW DATABASES ;
 20
 21#创建数据表
 22
 23CREATE DATABASE test_db;
 24
 25DROP DATABASE test_db;
 26
 27USE test_db;
 28
 29SHOW DATABASES ;
 30#创建基本表,没有约束
 31CREATE TABLE tb_emp1
 32(
 33    id INT(11),
 34    NAME VARCHAR(25),
 35    deptID INT(11),
 36    salary FLOAT #当数据范围在±131072(65536×2)以内的时候,float数据精度是正确的,
 37);
 38
 39SHOW TABLES;
 40#使用主键约束
 41    #单字段主键1
 42    #方法一:定义完列之后直接指定唯一索引
 43CREATE TABLE tb_emp2
 44(
 45    id INT(11) PRIMARY KEY,
 46    NAME VARCHAR(25),
 47    deptId INT(11),
 48    salary FLOAT
 49);
 50    #单字段主键2
 51    #方法二:定义完所有列之后指定唯一索引
 52CREATE TABLE tb_emp3
 53(
 54    id INT(11),
 55    NAME VARCHAR(25),
 56    deptId INT(11),
 57    salary FLOAT,
 58    PRIMARY KEY(id)
 59);
 60
 61    #多字段联合主键
 62CREATE TABLE tb_emp4
 63(
 64    #id int(11),
 65    NAME VARCHAR(25),
 66    deptId INT(11),
 67    salary FLOAT,
 68    PRIMARY KEY(NAME,deptId) #没有ID,直接使用名字和部门编号定义主键
 69);
 70#外键约束
 71    #主表:主键所在表 tb_dept1
 72    #子表:关联字段中外键所在表 tb_emp5
 73    #注意:子表外键关联父表主键,类型必须一致
 74CREATE TABLE tb_dept3
 75(
 76    id INT(11),
 77    NAME VARCHAR(22) NOT NULL,
 78    location VARCHAR(50)
 79);
 80
 81CREATE TABLE tb_emp9
 82(
 83    id INT(11) PRIMARY KEY,
 84    NAME VARCHAR(25),
 85    deptId INT(11),
 86    salary FLOAT,
 87    CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept13(id)
 88);
 89SHOW TABLES;
 90
 91#非空约束
 92CREATE TABLE tb_emp6
 93(
 94    id INT(11) PRIMARY KEY,
 95    NAME VARCHAR(25) NOT NULL,
 96    deptId INT(11),
 97    salary FLOAT
 98);
 99#唯一性约束
100    #要求该列唯一,允许为空,但只能出现一个空值,此属性可保证一列/多列不出现重复值
101    #方法一:定义完列之后直接指定唯一索引
102CREATE TABLE tb_dept2
103(
104    id INT(11) PRIMARY KEY,
105    NAME VARCHAR(22) UNIQUE,
106    location VARCHAR(50)
107);
108    #方法二:定义完所有列之后指定唯一索引
109CREATE TABLE tb_dept3
110(
111    id INT(11) PRIMARY KEY,
112    NAME VARCHAR(22),
113    location VARCHAR(50),
114    CONSTRAINT sth UNIQUE(NAME) #sth 疑问
115);
116/*
117注意:
118unique与 primary key区别
1191.一个表中可以有多个字段声明为unique,而primary key只能有一个;
1202.声明为unique允许NULL存在,而primary key不允许。
121*/
122
123#默认约束
124#如果赋值时,拥有默认约束的列没有复制,则自动设置为默认值
125CREATE TABLE tb_emp7
126(
127    id INT(11) PRIMARY KEY,
128    NAME VARCHAR(25) NOT NULL,
129    deptId INT(11) DEFAULT 1111, #没指定都为11
130    salary FLOAT
131);
132
133#设置表的属性值自动增加
134CREATE TABLE tb_emp8
135(
136    id INT(11) PRIMARY KEY AUTO_INCREMENT,
137    NAME VARCHAR(25) NOT NULL,
138    deptId INT(11),
139    salary FLOAT
140);    
141/*
142注意:
143用在希望插入新记录时,自动生成字段的主键值
1441.初始值为1,每增加一条记录,字段值加1;
1452.一个表只能有一个字段使用atuo_increment约束,且该字段必须为主键的一部分;
1463.auto_increment可以约束任何整数类型
147*/
148#测试auto_increment约束
149/*
150注意:
151insert方法并不是sql标准语法,不一定被其他数据库支持
152*/
153INSERT INTO tb_emp8(NAME,salary) VALUES('Lucy',1000),('Lura',1200),('Kevin',1500);    
154
155SELECT * FROM tb_emp8
156
157#查看数据表结构
158/*
1591.describe/desc
1602.show create table 用来显示创建表时的语句
161*/
162DESCRIBE tb_dept1;
163DESC tb_emp7;
164
165SHOW CREATE TABLE tb_emp1;
166SHOW CREATE TABLE tb_emp1\G; #加上\G参数更直观展示,此处没看出来有什么效果
167
168#修改数据表
169/*
1701.修改表名
1712.修改字段数据类型或字段名
1723.增加/删除字段
1734.修改字段的排列位置
1745.更改表的存储引擎
1756.删除表的外键约束
176*/
177#1.修改表名
178SHOW TABLES;
179ALTER TABLE tb_dept3 RENAME tb_deptment3;
180
181#2.修改字段数据类型或字段名
182    #修改字段数据类型
183
184DESC tb_dept2;
185ALTER TABLE tb_detp2 MODIFY NAME VARCHAR(30); #出错错误代码: 1146 Table 'test_db.tb_detp2' doesn't exist
186ALTER TABLE tb_detp2 MODIFY location VARCHAR(55);
187
188    #修改字段名
189DESC tb_dept1;
190ALTER TABLE tb_dept1 CHANGE location loc VARCHAR(50);
191
192/*
193注意:
1941.新字段名的数据类型不可以为空,如果不修改数据类型,填写与原来一致的即可;
1952.change可以实现modify的功能,将新字段名与旧字段名一致,只修改数据类型即可。
196建议:数据库中有数据时,尽量不要更改数据类型
197*/
198#也可以修改为其他数据类型
199ALTER TABLE tb_dept1 CHANGE loc loc INT(50);
200
201#3.增加/删除字段
202    #增加字段
203    #1.添加无完整性约束条件的字段
204DESC tb_dept1;
205ALTER TABLE tb_dept1 ADD managerId INT(10); #默认添加到最后列
206
207    #2.添加有完整性约束条件的字段
208ALTER TABLE tb_dept1 ADD column1 VARCHAR(12) NOT NULL;
209
210    #3.在表的第一列添加一个字段
211ALTER TABLE tb_dept1 ADD column2 INT(11) FIRST;
212
213    #4.在表的指定列后添加一个字段
214ALTER TABLE tb_dept1 ADD column3 INT(11) AFTER NAME;
215
216/*
217注意:
218add 有两个可选参数,分别为:first after
219first:添加为首行字段
220after:添加为指定列之后的字段
221不填默认添加到最后一行
222*/
223
224    #删除字段
225DESC tb_dept1;
226ALTER TABLE tb_dept1 DROP column2;
227
228#4.修改字段的排列位置
229    #修改表字段到第一个字段
230DESC tb_dept1;
231ALTER TABLE tb_dept1 MODIFY column1 VARCHAR(12) FIRST;
232
233    #修改表字段到指定字段之后
234AFTER TABLE tb_dept1 MODIFY loc INT(50) AFTER id;
235/*
236错误代码: 1064
237You have an error in your SQL syntax; 
238check the manual that corresponds to your MySQL server version 
239for the right syntax to use near 'after table tb_dept1 modify column1 varchar(12) after loc' at line 1
240*/
241
242#5.更改表的存储引擎
243    #查询数据表采用存储引擎
244SHOW CREATE TABLE tb_deptment3; #ENGINE=MyISAM
245    #修改为InnoDB
246ALTER TABLE tb_deptment3 ENGINE=INNODB; #ENGINE=InnoDB
247
248#6.删除表的外键约束
249#外键一旦删除,便会解除主表从表之间的关联关系
250#首先创建一个新表,关联下方tb_emp1
251
252CREATE TABLE tb_emp9
253(
254    id INT(11) PRIMARY KEY,
255    NAME VARCHAR(25),
256    deptId INT(11),
257    salary FLOAT,
258    CONSTRAINT fk_emp9_deptment3 FOREIGN KEY (deptId) REFERENCES tb_deptment3(id);
259);
260
261#出错
262SHOW CREATE TABLE tb_deptment3;
263/*
264tb_deptment3  CREATE TABLE `tb_deptment3` (                                                                                                                                                                                            
265                `id` int(11) NOT NULL,                                                                                                                                                                                                 
266                `name` varchar(22) DEFAULT NULL,                                                                                                                                                                                       
267                `location` varchar(50) DEFAULT NULL,                                                                                                                                                                                   
268                PRIMARY KEY (`id`),                                                                                                                                                                                                    
269                UNIQUE KEY `sth` (`name`)                                                                                                                                                                                              
270              ) ENGINE=InnoDB DEFAULT CHARSET=utf8
271*/
272
273#删除外键
274
275ALTER TABLE tb_emp9 DROP FOREIGN KEY fk_emp9_deptment3 #上方tb_emp9未成功创建,无法测试。
276
277#删除数据表 表中定义和数据均被删除
278    #删除没有被关联的表
279DROP TABLE IF EXISTS tb_dept2; 
280DROP TABLE IF EXISTS tb_dept2,tb_dept1,tb_emp3;  #共 0 行受到影响, 1 个警告
281/*
282注意:
283可以不加IF EXISTS,但是数据表不存在会出现错误提示
284加上用于删除前判断删除的表是否存在,如果不存在,则会收到警告
285*/
286    #删除被其他表关联的主表
287
288    /*
289    1.首先创建两个关联表
290    */
291CREATE TABLE tb_dept2
292(
293    id INT(11) PRIMARY KEY,
294    NAME VARCHAR(22),
295    location VARCHAR(50)
296);
297CREATE TABLE tb_emp10
298(
299    id INT(11) PRIMARY KEY,
300    NAME VARCHAR(25),
301    deptId INT(11),
302    salary FLOAT,
303    CONSTRAINT fk_emp_dept FOREIGN KEY (deptId) REFERENCES tb_dept2(id);
304);
305/*
306出错
307错误代码: 1064
308You have an error in your SQL syntax; 
309check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
310*/
311SHOW TABLES;


有一些代码无法执行的命令已经标志出来了,请注意。