二、SQL语句(DDL:库、表操作)

分类

  • DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;

  • DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);

  • DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;

  • DQL(Data Query Language):数据查询语言,用来查询记录(数据)。

一、DDL

  • 查看所有数据库名称:SHOW DATABASES; 

  • 切换数据库:USE mydb1,切换到mydb1数据库;

  • 查看当前使用的数据库的名称: select database();

    #显示所有的数据库
    SHOW DATABASES;
    #使用那个数据库
    #use 数据库名
    USE test;
    #查询当前使用的数据库
    SELECT DATABASE();
    #查询某个数据库下有哪些表
    SHOW TABLES;
    #查看表结构
    #desc 表名;
    DESC  tb_user;

1. SQL语句的要求:

1. 写完一条sql语句,使用分号结束, 可以分行写 ​ 2. 关键字 不区分大小写, 推荐写大写 ​ 3. 表名,数据库名,列名 不区分大小写 推荐写小写

2.创建数据库

语法: create database 数据名 [DEFAULT CHARACTER SET 字符集 COLLATE 排序规则字符集];

数据名不能重复

DEFAULT CHARACTER:设置默认的字符集编码: 默认值utf8

utf8: utf8 编码最⼤字符长度为 3 字节,如果遇到 4 字节的宽字符就会插⼊异常了,比如Emoji表情,就无法使用utf8存储,推荐使用utf8mb4

utf8mb4: mb4即most bytes 4,专门用来兼容四个字节即以上的unicode, 在Mysql在5.53版本之后

COLLATE: 排序规则字符集 默认值 utf8_general_ci 带ci: 值不区分大小写 不带ci: 值区分大小写 utf8mb4_bin:将字符串每个字符⽤⼆进制数据编译存储,区分大小写,可以存二进制的内容。推荐使用

#创建一个名字为mytest1的数据库
CREATE DATABASE mytest1  DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
​
#为了防止因为数据名名字存在报错, 
# if not EXISTS
CREATE DATABASE IF NOT EXISTS mytest1  DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
​
#删除数据库  慎用
# drop database 数据库名;
DROP DATABASE mytest1;
​
#修改
#修改数据库编码:
#alter database 数据名  内容
ALTER DATABASE mytest1 CHARACTER SET utf8mb4;

3.创建表

(1)创表基本概念、要求

创表
表结构:   列名(字段名) 数据类型
没有字符类型,只有字符串类型(文本)
​
数值类型:
​
浮点型:  float,double,decimal 
必须:  double(d,m)   m: 小数位  d:有效数字长度
      double(5,2)  2位小数   整数位 = 5-2 = 3
      -999.99 ~ 999.99
unsigned表示无符号:  数值类型后面 添加 unsigned , 
     不加默认是signed(有符号)
     
文本类型 字符串类型
文本类型 char与varchar  
要求: 1. 一定设置长度  char(10) 固定长 或者varchar(10) 可变长度  长度最多存放多少个字符
     2. char与varchar区别: 如果值长度小于指定长度, char: 值后面补空格  'ab       '
      varchar: 不会补空格 'ab'
char使用场景: 列的值字符个数固定    
​
二进制文件:  BLOB 
在实际开发中, 文件不会存在数据库, 文件存在文件服务器中, 数据库存储的文件的地址
​
常用的时间类型:
日期类型:年月日: date    时间类型: time
datetime: 年月日时分秒
mysql 日期格式:"yyyy-MM-dd hh:mm:ss"

(2)创表语句

 create table 表名(
      列名1 数据类型 [其他说明],
      列名2 数据类型 [其他说明],
      列名3 数据类型 [其他说明],
      ...
      列名n 数据类型 [其他说明]
  )
  
  注意:
     最后一行不要写逗号
     推荐的取名方式:
     表名: tb_表名
     列名: 多个单词: 单词1_单词2
     
USE mytest1;
#创建一个用户表:  id int 编号, name varchar(50) 用户名  password 密码  sex性别 
# birthday 出生日期 date  address 地址 varchar(200)
#在mysql中,给列,表名 添加一个包裹
CREATE TABLE `tb_user`(
   `id` INT UNSIGNED,
   `name` VARCHAR(50),
   `password` VARCHAR(50),
   `sex` VARCHAR(2),
   `birthday` DATE,
   `address` VARCHAR(200) 
)
​
## 引擎: 5.5以后默认使用引擎: innodb   5.5之前: 默认 myisam
## innodb 支持事务  myisam 不支持
## innodb 支持行锁,表锁  myisam 支持到表锁
## innodb 支持外键约束  myisam不支持

还可以添加注释

## 字符集: 默认 与数据库的字符集一样
## 排序规则字符集: 默认 与数据库的字符集一样
## comment 注释
CREATE TABLE emp (
eid CHAR(6) COMMENT '编号',
ename VARCHAR (50) COMMENT '姓名',
age INT COMMENT '年龄',
gender VARCHAR (6) COMMENT '性别',
birthday DATE  COMMENT '出生日期',
hiredate DATE  COMMENT '入职日期',
salary DECIMAL (7, 2) COMMENT '薪水',
RESUME VARCHAR (1000)  COMMENT '简介'
) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT '员工表' ;

(3)表操作

## 创建表,如果表名存在,创建失败
## 表操作:
## 删除表
## drop table 表名;
DROP TABLE emp;
​
##查看创建表的sql
##show create table 表名
SHOW CREATE TABLE `tb_user`;
​
DESC tb_user;
#修改表:
##语法: alter table 表名 修改的内容;
#1. 修改之添加列:给tb_user表添加tell列:
ALTER TABLE tb_user ADD tell CHAR(11);
​
#2. 修改之修改列类型:修改tb_user表的tell列类型为VARCHAR(11):
ALTER TABLE  tb_user MODIFY tell VARCHAR(11);
​
#3. 修改之修改列名:修改tb_user表的tell列名为iphone:
ALTER TABLE  tb_user CHANGE tell iphone VARCHAR(11);
​
#4. 修改之删除列:删除tb_user表的iphone列:
ALTER TABLE tb_user DROP iphone;
​
#5. 修改之修改表名称:修改tb_user表名称为tb_userinfo:
ALTER TABLE tb_user RENAME TO tb_userinfo;

备份表结构, 创建表以另外一张表的表结构

CREATE TABLE tb_user AS SELECT * FROM tb_userinfo WHERE 1=2;
CREATE TABLE tb_user1 AS SELECT id,`name`,`password` FROM tb_userinfo WHERE 1=2;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值