MySQL命令与SQL语句 一、mysql 管理命令 mysql> status #查看数据库的状态(\s) mysql> exit quit #退出数据库(\q) mysql> \c #终止当前的SQL语句 mysql> help #查看帮助信息(\h、?、\?) mysql> source #库内导入数据(\.) (mysql< /tmp/fill.sql) #库外导数据 mysql> use #切换数据库(\u) mysql> tee /tmp/a.log #记录操作日志(\T) mysql> show slave status\G #将结果展示成key:value的形式 mysql> tee a.log mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ mysql> \q [root@db01 ~]# ll total 352212 -rw-r--r-- 1 root root 243 Dec 2 00:04 a.log [root@db01 ~]# cat a.log mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ mysql> \q `tee只针对当前会话 就是你再开一个窗口输入命令 a.log里面是不会记录你新窗口输入的东西的 `如果想全局会话保存日志的话: vim /etc/my.cnf [client] tee=a.log 一定要放在客户端里 不要放在服务端里面了
只要是命令行里跟密码相关的命令 上翻是找不到的 但是tee日志里可以看到 所以危危险险
二、mysqladmin管理命令 #设置密码 password [root@db01 ~]# mysqladmin -uroot -p1 password \'123\' #关闭实例 shutdown [root@db01 ~]# mysqladmin -uroot -p1 shutdown #创建数据库 create [root@db01 ~]# mysqladmin -uroot -p123 create oldboy2 #删除数据库 drop [root@db01 ~]# mysqladmin -uroot -p123 drop oldboy2 #查看MySQL的参数 variables [root@db01 ~]# mysqladmin -uroot -p123 variables #刷新binlog日志 flush-log [root@db01 ~]# mysqladmin -uroot -p123 flush-log #重载授权表 reload [root@db01 ~]# mysqladmin -uroot -p123 reload #判断MySQL是否存活 [root@db01 ~]# mysqladmin -uroot -p123 ping 三、什么是SQL语句?机构化查询语言
四、SQL语句的分类 1.DDL(data definition language)数据定义语言create 创建
drop 删除
alter 修改
truncate 截断
针对库的DDL
#增(create) \'创建库名尽量不要用函数的名 会发生错误 就像shell脚本一样 定义变量尽量不用命令名啥的 mysql> create database db; mysql> create schema(也是库的意思) db1; mysql> create database db; ERROR 1007 (HY000): Can\'t create database \'db\'; database exists \'如果存在了db1库 再次创建会报错 这么写就不会报错 开发写代码会让程序尽量不报错 所以这么写 mysql> create database if not exists db; Query OK, 1 row affected, 1 warning (0.00 sec) \'这是规则的创建语法 指定字符集与校验规则 mysql> create database db2 charset utf8 collate utf8_general_ci; \'不加这么一串创建也可以 但是需要默认字符集为utf8 在配置文件里加上就可以 vim /etc/my.cnf [mysqld] character_set_server=utf8 #删(drop) mysql> drop database zls1; #改(alter)也就只能改字符集和校验规则了,改库名只能物理修改mv了 mysql> alter database zls charset gbk; mysql> show create database db; +----------+-------------------------------------------------------------+ | Database | Create Database | +----------+-------------------------------------------------------------+ | db | CREATE DATABASE `db` /*!40100 DEFAULT CHARACTER SET gbk */ | +----------+-------------------------------------------------------------+针对表的DDL
#数据类型 1.整型 int -2^31 ~ 2^31-1 tinyint -128 ~ 127 2.字符串类型 char 定长 char(20) #tank 占20个字节 固定知道的字节就用char varchar 变长 varchar(20) #tank 占4个字节 不固定不知道的就用varchar 3.枚举类型 enum (给值 只能从指定的里面选) 4.日期类型 datetime(1000-9999) timestamp (1970.01.01-2038.01.19) #数据约束 1.非空: not null 2.主键: primary key 3.自增: auto_increment 4.无符号: unsigned 5.默认值: default 6.注释: comment 7.单独的唯一的:unique key #增 第一次创建 mysql> create table student(id int,name varchar(20),age tinyint,gender enum(\'f\',\'m\'),cometime datetime); mysql> insert into student values(1,\'msy\',18,\'f\',NOW()); #根据上面这个创建的 但是并不规范 没有约束条件 mysql> select * from student; +------+------+------+--------+---------------------+ | id | name | age | gender | cometime | +------+------+------+--------+---------------------+ | 1 | msy | 18 | f | 2019-12-02 01:33:44 | +------+------+------+--------+---------------------+ 第二次约束创建 mysql> create table student2( ->id int not null primary key auto_increment, ->name varchar(20) not null, ->age tinyint unsigned not null, #无符号就包括非空了 非要加not null 就加在后面, #你不加unsigned无符号时 年龄输入128会报错 加上之后就不会报错 因为-128-127会自动变成0-255 ->gender enum(\'f\',\'m\'), ->cometime datetime default NOW()); 第三次完美规则创建 mysql> create table student4( ->id int not null primary key auto_increment comment \'学生学号\', ->name varchar(20) not null comment \'学生姓名\', ->age tinyint unsigned not null comment \'学生年龄\', ->gender enum(\'f\',\'m\') comment \'学生性别\', ->cometime datetime default NOW()) comment \'入学时间\'; #删 mysql> drop table student3; #改 1.插入字段 mysql> alter table stu add qiandao varchar(10); 2.在最前面插入字段 mysql> alter table stu add sb varchar(10) first; 3.将字段插入到qls字段的后面 mysql> alter table stu add msy varchar(10) after qls; 4.删除字段 mysql> alter table stu drop msy; 5.修改字段属性 mysql> alter table stu modify qls int; 6.修改字段名字,也可以修改属性 mysql> alter table stu change qls msy varchar(5); 7.修改表名 mysql> alter table stu rename stu3; 8.添加主键 mysql> alter table stu add primary key zhujian(sb); 2.DML (Data Manipulation Language) 数据操作语言