zyh3033 发表于 2018-10-8 11:00:23

MySQL——(SQL语句)

  关系型数据库设计范式:
  第一范式:当关系模式R的每个关系属性都是不可分的数据项,那么就成R是第一范式的模式(1NF)
  简单说法:字段是原子性的
  第二范式:党关系模式R是2NF,且关系模式R(U,F)中的所有非主属性对任何候选关键字不存在传递依赖,则称关系R是属于第三范式
  简单说法:存在可用主键
  第三模式:当关系模式R是2NF,且关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递依赖,则称关系R是属于第三方范式
  简单说法:任何表都不应该有依赖于其他表非主键的字段
  数据库组件:
  数据库,表,索引,视图,用户,权限
  编程接触的组件:(触发器,存储过程,存储函数,事件调度器)
  mysql安装完成之后的安全配置(mysql_secure_installation:一键配置脚本)
  1、删除mysql匿名用户
  2、为所有root用户设置密码
  3、关闭主机名反解功能
  SQL语句类型:
  DDL:数据库定义语言
  create,drop,alter
  DML:数据库操作语言
  insert,delete,update,select
  DCL:数据控制语言
  grant,revoke
  常用SQL语句:
  create:
  CREATE DATABASE    #创建数据库
  CREATE DATABASE CHARACTER SET charset_name db_name;    #创建数据库并设置字符编码
  CREATE TABLE table_name(字段名,字段数据类型,约束条件)
  #创建表
  数据类型:
  整形:int
  tinyint   #1byte
  smallint    #2byte
  mediumint   #3byte
  int         #4byte
  bigint      #8byte
  字符型:
  char      #固定长度字符型(不区分大小写)
  varchar   #可变长度字符型(不区分大小写)
  binary      #固定长度字符型(区分大小写)
  varbinary   #可变长度字符型(区分大小写)
  约束条件:
  NOT NULL      #不允许为空
  DEFAYULT      #默认值
  PRIMARY KEY   #主键
  UNIQUE          #唯一键
  unsigned      #无符号(适用于int类型)
  auto_increment#自增,需要定义在一个键中(适用于int类型)
  CREATE INDEX
  #创建索引,索引是特殊的数据结构,用于搜索加速,一般定义在查找时作为查找条件的字段
  例:create table test (id int primary key auto_increment, name varchar(50));
  mycli:功能更强大的mysql客户端,使用python开发的
  #mysql客户端工具
  
  使用实例:
  show global variables;
  #查看全局参数,有的参数能够修改并立即生效,有的需要修改配置文件
  show session variables;    #mysql的当前会话参数
  show character set;      #查看支持的字符集
  show collation;            #查看支持的排序规则
  show engines;            #查看支持的存储引擎
  show table status like 'user'\G                            #查看表状态
  show global variables like '%server%';    #数据库id
  show master logs;          #查看二进制日志
  show master status;      #查看主服务器状态
  show grants for 'dj'@'localhost';    #查看di用户授权信息
  show index from mysql.user;    #查看索引
  show databases;            #查看数据库
  show tables;               #查看数据库的表
  desc table_name             #查看表结构
  
  select 字段名 from 表名     #查看表中内容
  select * from user\G;      #查看用户的详细信息
  select database();            #查看默认数据库
  select * from test where>
  #查询test表中id大于2小于4的数据
  where条件:
  > < >=   
  
  delete from 表名 where 条件匹配    #删除条件匹配的数据
  delete from test where>
  
  insert into 表名 (字段1,字段2) values(字段1的值,字段2的值)
  insert into test(name) values('xiaoqiao');
  insert into 表名 (字段1,字段2) select语句
  #插入通过select查询得到的数据
  insert into user (user,host,passwd) select User,Host,
  Password from mysql.user;
  
  grant 权限列表 on 数据库.表 to '用户名'@'授权主机'>
  revoke drop on 数据库.表 from '用户名'@'授权主机';                                    #撤销授权
  altar table 表名 add 字段名 字符型#添加字段
  alter table test ip varchar;
  
  altar table 表名 change 源名 修改后的名 字符型#更改字段
  alter table test change ip sid int;
  altar table 表名 drop 字段名    #删除字段
  alter table test drop sid;
  set global 变量名=值;    #设置全局参数
  set session 变量名=值;            #设置当前会话参数
  use 数据库名;    #指定默认数据库
  create index 索引名 on 表名;    #创建索引
  flush privileges;    #重读授权表
  创建表的三种方式:
  1、直接创建
  create teble 表名 (字段名1 字段类型,字段名2 字段类型)
  2、复制表和表中的数据
  create teble表名 select语句
  例:create tebletest select User,Host,Password from mysql.user;
  3、复制表结构
  create teble tbl_name like 模板表
  例:create teble test2 LIKE test
  
  
  
  
  

页: [1]
查看完整版本: MySQL——(SQL语句)