MySQL结构化查询语句


MySQL客户端命令

create  ---创建
drop    ---删除
table  ----表
alter  ---修改
	rename
	add
	modify
	change
select ---查询

MySQL 的配置文件

1.影响服务端的启动 [mysqld] [server]
2.影响客户端的连接 [mysql][mysqladmin][mysqldump] [client]

[root@db01 ~]# vim /etc/my.cnf
[mysqld]
basedir=/app/mysql
datadir=/app/mysql/data
server_id=1
log-bin=mysql-bin
socket=/opt/mysql.sock
[mysql]
user=root
password=123
socket=/opt/mysql.sock

MySQL客户端命令

? 查看帮助
\q : quit exit 退出mysql终端 MySQL5.6 Ctrl + c
\c : 终止命令 MySQL5.7 Ctrl + c
\s :  查看MySQL状态
\G : 格式化输出
\. :  source 导入数据
\! : system 后面接系统命令

MySQLadmin客户端命令

# 检测MySQL是否存活
[root@db01 ~]# mysqladmin -uroot -p123 ping
# 停止MySQL服务
[root@db01 ~]# mysqladmin -uroot -p123 shutdown
# 查看MySQL默认配置
[root@db01 ~]# mysqladmin -uroot -p123 variables
# 查看MySQL状态
[root@db01 ~]# mysqladmin -uroot -p123 status
# 刷新MySQL binlog日志
[root@db01 ~]# mysqladmin -uroot -p123 flush-log
# 库外建库
[root@db01 ~]# mysqladmin -uroot -p123 create zls111
# 库外删库
[root@db01 ~]# mysqladmin -uroot -p123 drop zls111
# 重新加载数据库
[root@db01 ~]# mysqladmin -uroot -p123 reload
# 设置密码 修改密码
[root@db01 ~]# mysqladmin -uroot -p123 password '1111'

MySQL结构化查询语句


开发规范:
01) 库、表名不能大写,数字开头,16个字符串
02) 表名和业务有关
03) drop 语句禁止
04) 选择合适的数据类型
05) 必须要有主键
06) 列尽量非空约束
07) 减少外键约束
08) 必须设置存储引擎和字符集
09) 列必须要有注释
10) 对于非负数设置数据类型约束--无符号

DDL(Database Definition Language)数据库定义语言

############## 库  #################
#-----增加------#  create
create database kjt;
create schema kjt;
create database if not exists kjt; #(带判断不会报错)
create schema if not exists kjt;

#----删-----# dorp
drop database kjt
drop database if exists kjt; #(带着判断)

#---改----# alter  (字符集,教研规则)
alter  database kjt charset latin5;
alter  database kjt charset utf8 collate utf8_bin;

#----查----# show (库 ,库的属性)
show databases;
show create databases kjt;

常用的数据类型

############# 表 #############
#--常用的数据类型 ---#
#--数字类型
int :整形 -2^31 ~ 2^31 -1       -2147483648 ~ 2147483647
tinyint: 最小整数 -128 ~ 127     PS:开启无符号范围为 0-255
float:浮点型 单精度
double:浮点型  双精度

单精度(float):在计算机中通常占用4个字节,即32位。
双精度(double):在计算机中通常占用8个字节,即64位。
单精度(float):有效位数大约为7位。这主要是由于尾数部分的位数限制,使得单精度浮点数在表示小数时只能精确到小数点后6位(加上小数点前的一位)。
双精度(double):有效位数大约为16位。双精度浮点数的尾数部分位数更多,因此能够表示更高精度的小数,精确到小数点后15位。


##--字符串类型
char: 定义字符串  char(3)
varchar: 变长字符串  varchar(3)
enum: 枚举类型    enum('f','m')   enum('0','1')

##--时间类型:
timestamp:时间戳类型 类型的值范围从1970-01-01 00:00:01 UTC到 2038-01-19 03:14:07
UTC
datetime: 时间类型 类型范围从1000-01-01 00:00:00到 9999-12-31 23:59:59

##--常用的约束
NULL:可以非空
NOT NULL: 非空
default:默认值
primary key: 主键   特点:唯一且非空
auto_increment : 自增
unique key : 唯一键 特点: 唯一 但可以为空
unsigned: 无符号(非负数)
comment: 注释
########## 表 #########
#----增----# create table  kjt(。。。。。。)
创建一个表 :学生表:id 学号,name 名字,age 年龄,gender 性别,phone 手机号,come_time 入学日期

create table stu1(id int unsigned auto_increment primary key comment '学号',
name varchar(10) not null comment '姓名',
gender enum('f','m') not null comment '性别',
phone char(11) unsigned not null comment '手机号',
come_time datetime comment '入学日期');
    
 id: 自增的无符号整数,作为主键,每个学生的唯一标识。
name: 学生姓名,最大长度为10个字符,不能为空。
gender: 枚举类型,用于表示性别,只能是'f'(女)或'm'(男),不能为空。
phone: 无符号整数,用于存储学生的手机号,不能为空。
come_time: 存储学生的入学日期和时间。

--- 向表中添加数据

insert into student(sno,sname,sage,ssex,sbirthday,class) values(3,'柯景腾',20,'m',now(),2);
insert into student values(4,'佳',18,'m',now(),3);

#------查 -----#
show create table stu1\G    #这个命令会显示创建表的完整SQL语句,包括所有列定义、键、约束等。
desc stu1;    #这个命令会显示表的字段、数据类型、是否允许NULL、键(如主键)、默认值等信息。


#----删----# drop table kjt;
drop table stu2;
DROP TABLE stu1, stu2, table3;



#----改----# 
# 修改表名
alter table stu1 rename stu;

# 添加删除字段
#-----------------字段名-最小整 -- 取消符号----非空 (0-255)
alter table stu add sg  tinyint  unsigned   not null; #(默认在最后一个字段)
alter table stu add aaa char(2) after sg; #(在指定字段后面添加)
alter table stu add sss char(2) first; #(添加在最前面)
alter table stu drop sss; #(删除一个字段)

# 修改字段 modify change
alter table stu10 modify lyk varchar(10);  # 只能修改字段的数据类型和约束
alter table stu change sg shengao int(3) unsigned not null; #可以修改字段类型和约束外还能修改字段名
create database linux50 character set utf8 collate utf8_general_ci;

create table student( 
sno char(20) primary key not null comment '学号',
sname varchar(10) not null comment '学生姓名',
sage tinyint unsigned not null '年龄',
ssex enum('f','m') default 'm' not null comment '性别 m 男 f女',
sbirthday datetime default null null comment '学生生日',
class varchar(16)  not null comment '班级'
);

create table course(
cno char(20) not null primary key comment '课程号',
canme tinyint(16) not null comment '课程名称',
tno tinyint(16) not null comment '教师编号'
);

create table score(
sno char(20) not null comment '学号',
cno char(20) not null comment '课程号',
mark float(4,1) not null comment '成绩'
);

create table teacher(
tno char(20) not null comment '教师编号',
tname varchar(10) not null comment '教师姓名',
tage tinyint not null comment '教师年龄',
tsex enum('0','1') not null comment '教师性别 0女 1男',
prof varchar(16) comment '教师职称',
depart varchar(16) comment '教师部门'
);
CREATE TABLE `test_table` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`DOMAIN_CODE` varchar(20) NOT NULL COMMENT '考试单位编号',
`EXAM_NAME` varchar(300) NOT NULL COMMENT '考试名称',
`EXAM_TYPE` int(1) NOT NULL COMMENT '考试类型(正式考试,补考)',
`TARGET_EXAM_ID` bigint(20) DEFAULT NULL COMMENT '关联正式考试的ID(如果是补考,该处是必填)',
`EXAM_PICTURE_PATH` varchar(100) DEFAULT NULL COMMENT '图示路径',
`EXAM_BEGIN_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '考试开始时间',
`EXAM_END_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '考试结束时间',
`EXAM_TIME` int(3) NOT NULL COMMENT '考试时长',
`EXAM_NEED_SCORE` int(5) NOT NULL COMMENT '考试所需积分',
`EXAM_PAPER_TYPE` int(1) DEFAULT NULL COMMENT '考试试卷类型(0固定、1随机)',
`EXAM_SCORE` double(6,2) DEFAULT NULL COMMENT '考试总分(关联试卷后回填)',
`EXAM_PASS_SCORE` double(6,2) NOT NULL COMMENT '考试及格分',
`EXAM_COMMIT_NUM` int(2) NOT NULL COMMENT '参考最大次数',
`EXAM_STATUS` int(1) NOT NULL COMMENT '发布状态0未发布,1已发布',
`EXAM_YEAR` varchar(5) NOT NULL COMMENT '年份',
`EXAM_PAPER_ID` bigint(20) DEFAULT NULL COMMENT '关联试卷ID',
`EXAM_DISCRIPTION` varchar(1000) DEFAULT NULL COMMENT '考试备注',
`OPERATOR_USER_ACCOUNT` varchar(20) NOT NULL COMMENT '修改人',
`OPERATOR_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '修改时间',
`TARGET_DOMAIN_CODE` varchar(20) DEFAULT NULL COMMENT '发布目标单位编号(发布时回填)',
`RANK` varchar(100) DEFAULT NULL COMMENT '职务级别(发布时回填)',
`EXAM_DIPLOMA_ID` bigint(20) DEFAULT NULL COMMENT '关联证书',
`DIPLOMA_NAME` varchar(200) DEFAULT NULL COMMENT '证书标题(关联证书后回填',
`DIPLOMA_PICTURE_PATH` varchar(200) DEFAULT NULL COMMENT '证书背景图片保存位置(关联证书后回填)',
`INDUSTRY_CODES` varchar(1000) DEFAULT NULL,
`LANGUAGE` int(2) NOT NULL DEFAULT '1' COMMENT '¯•ï¼‰',
`EXT1` int(1) NOT NULL DEFAULT '1' COMMENT '成绩计入学分的字段标识(0是,1否)',
`EXT2` int(3) DEFAULT NULL COMMENT '成绩所占比例',
`EXT3` varchar(1) DEFAULT NULL,
`EXT4` varchar(1) DEFAULT NULL,
`EXT5` varchar(1) DEFAULT NULL,
PRIMARY KEY (`ID`),
KEY `DOMAIN_CODE` (`DOMAIN_CODE`),
KEY `EXAM_PAPER_ID` (`EXAM_PAPER_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=365 DEFAULT CHARSET=utf8;