MySQL学习笔记——基本语法
SQL——结构化查询语言(Structured Query Language)
1. SQL语言不区分大小写,建议关键字用大写,但是字符串常量区分大小写
2. SQL注释:
/**/多行注释 --单行注释 MySQL注释:#
3. 列出MySQL服务器主机上的数据库
SHOW DATABASES[LIKE wild];
4. 用给定的名字创建一个数据库
语法:CREATE DATABASE[IF NO EXISTS] 数据库名字 创建之后要刷新才能在列表中看见新建立的数据库
create database spring_user default character set utf8 collate utf8_general_ci;
5. 删除数据库中的所有表和数据
语法:DROP DATABASE[IF NO EXISTS] 数据库名字
6. 把指定数据库作为默认(当前)数据库使用,用于后续语句
语法:USE 数据库名字
7. 数据库对象的命名规则:
i>必须以字母开头
ii>可包括数字和三个特殊字符(# _ $)
iii>不要使用MySQL的保留字
iv>同一个schema下的对象不能同名
8. 建表语句:CREATE TABLE [schema] 表的名字 (column datatype[DEFAULT expr],...) ENGINE = 存储机制
数据表的每行称为一条记录(record),每一列称为一个字段(field),主键列:唯一能够识别每条记录的列
CREATE TABLE IF NOT EXISTS `t_user` (`username` varchar(64) NOT NULL,`password` varchar(11) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
9. MySQL支持的列类型
i>数值类型 ii>日期/时间类型 iii>字符串(字符)类型 整数:int或者integer 浮点:double 字符:char、varchar、blob、text
10. SHOW TABLES [FROM 数据库名字][LIKE wild]
功能:显示当前数据库中已有的数据表的信息
11. CREATE TABLE 表的名字(
列名 列类型,
列名 列类型
);
CREATE TABLE tb_dept( #创建一个部门表叫做tb_dept id INT PRIMARY KEY AUTO INCREMENT, #部门编号id,整型,primary key 主键 NAME VARCHAR(18), #部门名称 name,字符,最多只能储存18个字符 description VARCHAR(100) #描述description,字符,最多只能存储100个字符 );
12. description或者DESC 表名[列名]
功能:查看数据表中各列的信息
mysql> desc t_user;
13. 用ALTER TABLE语句修改表的结构
修改列类型 ALTER TABLE 表名 MODIFY 列名 列类型 注意:不是任何情况都可以修改,例如名字是char不能改成int
增加列 ALTER TABLE 表名 ADD 列名 列类型 注意:使用ADD子句增加字段,新的字段只能被加到整个表的最后
ALTER TABLE employees ADD gender CHAR(1);
删除列 ALTER TABLE 表名 DROP 列名 列类型
ALTER TABLE employees DROP gender CHAR(1); #mysql特有
ALTER TABLE employees DROP COLUMN gender CHAR(1); #oracle
列改名 ALTER TABLE 表名 CHANGE 旧列名 新列名 列类型
更改表名 ALTER TABLE 表名 RENAME 新表名
RENAME TABLE 表名 TO 新表名
14. 语法:DROP TABLE 表的名字
功能:删除表
15. 修改MySQL的密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
16. MySQL怎么取消错误的命令
1.没办法的办法,ctrl+c,完全退出
2.可以输入\c 废弃本次语句,若输入后没效果是因为未保持当前输入语句完整匹配
17. 自增id归1
TRUNCATE TABLE baike_pages;
18. 使用timestamp,并在修改的时候自动更新
将默认值设置为CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,并为NOT NULL
19. MYSQL数据导出,使用管道命令
mysql -uroot -pXXXX -e"select * from music.tencent_music" > /home/mi/下载/dump
也可以使用mysqldump
mysqldump -hlocalhost -uroot -p xxx_table > ./xxx_table_2020-04-20.bak
20.MYSQL查看表数据和索引所占的存储大小
select concat(round(sum(data_length/1024/1024),2),'MB') as data_length_MB, concat(round(sum(index_length/1024/1024),2),'MB') as index_length_MB from information_schema.tables where table_schema='xx_db' and table_name = 'xx_table';
结果