有时间没更新简书了,最近在学MySQL数据库,前段时间学的Python,学的稀里哗啦的,人生苦短,为何用Python。这两天整理了一部分最近一周学MySQL数据库的常用语法,后续会再持续更新一部分,望对学习的你有所帮助。Good good study,Day day up
MySQL语句
登陆
登陆本身MySQL
mysql -u root -p 会提示输入密码,验证登陆
mysql -uroot -p密码 会显示密码,直接登陆
登陆别人MySQL
mysql -hPup 连接其他MySQL(h为host主机,P端口号:默认为3306,u:用户名,p:password密码)
mysql -h ip地址 -u root -p 提示输入密码,验证登陆
查看
语句 |
说明 |
SHOW DATABASES; |
查看展示所有数据库 |
SHOW TABLES; |
查看展示数据库中数据表 |
SHOW STATUS; |
查看服务器状态信息 |
SHOW STATUS \G; |
查看服务器状态信息,并整理 |
SHOW TABLES STATUS \G; |
查看数据表状态信息,并整理 |
SHOW CREATE DATABASE 库名; |
查看创建的数据库 |
SHOW CREATE TABLE 表名; |
查看创建表的语句 |
SHOW ENGINES; |
查看引擎 |
SHOW VARIABLES LIKE 'deafult_storage_engine'; |
查看默认存储引擎 |
SHOW VARIABLES LIKE 'deafult%'; |
查看以'default'为开头的变量 |
SHOW GRANTS; |
查看授权用户(所有用户或特定用户)的安全权限 |
创建
语句 |
说明 |
CREATE DATABASE 库名; |
创建数据库 |
CREATE DATABASE 库名 CHARSET = 'utf8'; |
创建库,设置编码为utf8类型 |
CREATE DATABASE IF NOT EXISTS 库名; |
如果库名不存在,则创建 |
CREATE TABLE 表名(列名1 数据类型 约束条件 注释,列名2 数据类型 约束条件 注释.....); |
创建表 |
CREATE TABLE IF NOT EXISTS 库名(列名1 数据类型 约束 注释,列名2 数据类型 约束 注释....,PRIMARY KEY(列名n))ENGINE = InnoDB DEFAULT CHARSET = 'utf8'; |
创建表,如果不存在,将表主键设置为列名n,存储引擎为InnoDB(为默认存储引擎),默认编码设置为'UTF8' |
注释: 1.如果你不想字段为NULL,可以设置字段属性为NOT NULL,在操作数据库时如果输入该字段的数据为NULL,就会报错
- 2.AUTO_INCREMENT 定义列为自增属性,一般用于主键,数值会自动+1,自增时随着前一位列的数值而言
- 3.PRIMARY KEY 关键字用于定义列为主键,可以直接跟在列后面设置,也可以在数据表末尾说明。也可以使用多列来定义主键,列间用逗号分隔
- 4.ENGINE 设置存储引擎,CHARSET 设置编码
插入
语句 |
说明 |
INSERT INTO 表名(列名1,列名2,列名3...) VALUES(value1,value2,value3...); |
数据表中插入单条数据 |
INSERT INTO 表名(列名1,列名2,列名3...) VALUES(valueA1,valueA2,valueA3...),(valueB1,valueB2,valueB3...); |
数据表中插入多条数据 |
注释: 如果列中约束有NULL或者默认值的,在插入数据中表后面的列可以不跟列名,后面values中同样也不跟值,在输出后,该列会自动显示NULL或者默认值
查询
注: MySQL数据库中查询数据通用为SELECT语法
- 查询语句中可以使用一个或者多个表,表之间使用','分隔,并使用WHERE语句来设定查询条件
- SELECT命令可以读取一条或者多条记录
- 使用'*'来替代其他字段,SELECT语句会返回表中所有列数据
- 使用'WHERE'语句来包含任何条件
- 使用'LIMIT'属性来设定返回的记录数
语句 |
说明 |
SELECT * FROM 表名; |
查询表中所有信息 |
SELECT 列1,列2,列3... FROM 表名; |
查询表中列1,列2,列3...等字段的信息 |
SELECT * FROM 表名 WHERE 条件; |
查询数据表中该条件语句下所有信息 |
SELECT * FROM 表名 WHERE 列 LIKE 'X%'; |
查询列中以'X'开头的所有数据信息 |
SELECT * FROM 表名 WHERE 列 BETWEEN 'M' AND 'N'; |
查询数据表中列在条件M和N之间的所有数据信息 |
SELECT * FROM 表名 WHERE 列 in (M,N); |
查询数据表中列在固定条件M个N中的所有数据 |
SELECT DISTINCT 列 FROM 表名; |
查询去重值(比如查看都有多大的年龄,年龄中都有同样的20岁,去重后只会显示一个20岁的) |
SELECT * FROM 表名 WHERE 列1 >/</= 值1 AND 列2 >/</= 值2; |
查看数据表中范围条件数据 |
SELECT * FROM 表名 WHERE 列 = 值1 OR 列 = 值2; |
查询数据表中条件不同值的数据 |
SELECT * FROM 表名 ORDER BY 列; |
查询数据表中值通过列排序结果 |
SELECT * FROM 表名 ORDER BY 列 DESC; |
查询表下排序结果降序 |
SELECT * FROM 表名 LIMIT M; |
查询表下数据范围,前M行字段数据 |
SELECT * FROM 表名 LIMIT M,N; |
查询从M行开始下的N行数据 |
SELECT name as zzz FROM 表名; |
别名查询表下数据 |
注: 上述'*'均可由数据表中列替换,若要查找几项列的信息,则列之间用','隔开;如:SELECT 列1,列2,列3...FROM 表 WHERE 条件;
修改
注: MySQL数据表中修改或更新数据,通常使用UPDATE语句
- 可以同时更新一个或多个字段
- 可以在WHERE条件中指定任何条件列的修改
- 可以在一个单独表中同时更新数据
- 可以更新数据表中所有数据
语句 |
说明 |
UPDATE 表名 SET 列名1 = 值1; |
将表中所有信息的列1都进行修改 |
UPDATE 表名 SET 列1 = 新值1,列2 = 新值2... WHERE 条件 |
将表中特定条件的列信息修改;修改特定的列内容,WHERE后面跟条件语句,后跟条件语句和查询语句句式一样 |
UPDATE 表名 SET 列 =REPLACE(lie,'old_sting','new_string') WHERE 条件; |
将条件语句下列中特定字符串改为其他字符串 |
ALTER TABLE 表名 MODIFY 列名 新数据类型 新约束 新注释; |
修改列数据类型,约束 |
添加
语句 |
说明 |
ALTER TABLE 表名 ADD 列名 数据类型 约束 注释; |
添加列 |
ALTER TABLE 表名 ADD COLUMN 列名 数据类型 约束 注释; |
新增列 |
ALTER TABLE 表名 ADD 新增列名 数据类型 约束 注释 AFTER 列名N; |
新增列在列N之后 |
ALTER TABLE 表名 ADD 列名 数据类型 约束 注释 FIRST;将列添加到表首
重命名
语句 |
说明 |
REMARE TABLE 原表名 TO 新表名; |
重命名表 |
ALTER TABLE 原表名 REMARE 新表名; |
重命名表 |
ALTER TABLE 原表名 REMARE TO 新表名; |
重命名表 |
ALTER TABLE 表名 CHANGE 原列名 新列名 数据类型 约束条件 注释; |
重命名列,并对列做修改 |
删除
删除表时要注意,执行完删除后,数据都会消失
语句 |
说明 |
DROP DATABASE 库名; |
删除数据库 |
DROP DATABASE IF EXISTS 库名; |
如果数据库存在则删除 |
DROP TABLE 表名; |
删除数据表全部数据和表结构,立刻释放磁盘空间,不管时默认存储引擎InnoDB还是MyISAM |
TRUNCATE TABLE 表名; |
清楚表中数据,但保留表结构 |
ALTER TABLE 表名 DROP 列名; |
删除表中指定某列 |
ALTER TABLE 表名 DROP CULUMN 列; |
删除指定列 |
DELETE FROM 表名 WHERE 条件; |
删除表中指定该条件的信息(where条件和查询条件句式一样) |
-
注: 当不用该表时,用DROP
- 当要保留表结构,但要清除表中所有记录时,用TRUNCATE
- 要删除部分记录时,用DELETE
其他
语句 |
说明 |
DESC 表名; |
展示表结构 |
PRIMARY KEY(列) |
将列设置为主键,可以在创建表开头使用,也可以在末尾使用 |
AUTO_INCREMENT |
递增,一般用于主键,数值+1,以上一个数值为基础 |
退出
蔚蓝天空