-
查看所有数据库
SHOW DATABASES;
-
查看数据库中所有表(使用此命令时,要先切换到指定数据库)
SHOW TABLES;
-
查看表中所有的列及对应列的属性
SHOW COLUMNS FROM Table_Name;
SHOW COLUMNS FROM Register; 查看Register表中所有列。
-
创建数据库
CREATE DATABASE BASE_NAME;
CREATE DATABASE Test_Register; 创建一个名为Test_Register的数据库。
-
删除数据库
DROP DATABASE BASE_NAME;
DROP DATABASE Test_Register; 删除名为Test_Register的数据库。
-
选择数据库
USE BASE_NAME;
USE Test; 切换到Test_Register库。
-
创建表
CREATE TABLE table_name (column_name column_type);
创建Register表,包含id、name、phone_number、date列, id为主键,自增。
CREATE TABLE IF NOT EXISTS Register(id INT NOT NULL AUTO_INCREMENT,
-> name VARCHAR(100) NOT NULL,
-> phone_number VARCHAR(100) NOT NULL,
-> date DATE,
-> PRIMARY KEY (id)
-> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
1.IF NOT EXISTS, 如果库里不存在此表,则创建;
2.如果字段不可为空,可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错;
3.AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1;
4.PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
5.ENGINE 设置存储引擎,CHARSET 设置编码;
6.上面sql语句中->为换行符,不代表语句结束;
7.分号 ; 代表语句结束。 -
删除表
DROP TABLE Table_Name;
DROP TABLE Register; 删除Register表。
-
插入数据
INSERT INTO table_name ( field1, field2,…fieldN )
VALUES
( value1, value2,…valueN );
向Register中插入一条数据, id自动创建, date可以为空,所以只插入name, phone_number两列就可以,语句如下:
INSERT INTO Register (name, phone_number) VALUES (‘CX’,‘13434556545’);
- 查询数据
SELECT COLUMN1, COLUMN2 FROM TABLE_NAME [WHERE CLAUSE] [LIMIT N] [ORDER BY COLUMN1 DESE/ASC]
[]中的内容均为可选内容,查询时可不写。
1.WHERE 后跟查询条件;
2.LIMIT 则限制返回数量;
3.ORDER BY 按指定列排序, DESE为降序,ASC为升序。
查询语句中,COLUMN1, COLUMN2可写为*,代表查询所有列。
select * from Register; 查询Register中所有列。
查询name为CX的数据:
select * from Register where name = ‘CX’;
查询表中所有的数据,但只返回两行:
select * from Register limit 2;
查询表中所有数据,并按照name降序排列:
select * from Register order by name desc;
查询name列:
select name from Register;
- 查询语句中,where后的子语句
WHERE condition1 [AND]/[OR] condition2
condition1 和condition2 是两个条件,之间用and或者or连接,一个表示并且,一个表示或者。
举两个简单的例子。
查询id为2且name为zs的数据:
select * from Register id = 2 and name = ‘zs’;
查询id为2或者name为ls的数据:
select * from Register id = 2 or name = ‘ls’;
在where子语句的条件中,不止有等于的操作符,还有很多其他的操作符,用来实现多种查询:
等号 =,检测两个值是否相等,如果相等返回true。
不等于 <>, !=,检测两个值是否相等,如果不相等返回true。
大于号 >,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true。
小于号 <,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true。
大于等于号 >=,检测左边的值是否大于或等于右边的值, 如果左边的值大于或等于右边的值返回true。
小于等于号 <=,检测左边的值是否小于或等于右边的值, 如果左边的值小于或等于右边的值返回true。
另外,在where查询语句中,可以使用BINARY关键字,进行大小写区分。mysql中,默认是不区分大小写的。
比如,下面这两条语句,查出的结果是一样的:
select * from Register where name = ‘ZS’;
select * from Register where name = ‘zs’;
而这两个语句,则当name值为ZS时,因为区分大小写,是查不到数据的:
select * from Register where binary name = ‘ZS’;
select * from Register where binary name = ‘zs’;
- 更新数据
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
where后的查询条件,与查询语句一致,即只更新满足条件的数据,如果没有where语句,则会更新所有。
向Register表中,更新date列为当前时间,没有设置where条件,更新date列中所有数据:
update Register set date = (select current_timestamp);
(select current_timestamp) 是查询当前时间。
更新id为2的date值:
update Register set date = ‘2021-08-27’ where id = 2;
- 删除数据
DELETE FROM table_name [WHERE Clause]
where后的查询条件,与查询语句一致,即只删除满足条件的数据,如果没有where语句,则会删除所有。
删除name为ls的数据:
delete from Register where name = ‘ls’;