SQL语句——SQL语句的基本知识和DDL语句

目录

 

SQL的基本概念

SQL的通用语法

SQL语句分类

DDL语句

数据库操作

查看所有数据库

创建数据库

查看创建数据库定义语句

修改数据库

删除数据库

使用数据库

查询当前正在使用的数据库

数据库表的操作

查看所有表

查看表结构

查看表的创建语句

创建表

列的数据类型说明

复制表操作

删除表

修改表名

修改表的字符集

添加列

修改列名称和类型

修改列的类型

删除列


SQL的基本概念

SQL指的是结构化查询语言(Structured Query Language),定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样(独特)的地方,称为“方言”。方言只能操作某一种数据库,方言就相当于与我们的家乡话,只能在某一块区域内使用,而我们学的SQL就像是普通话,是通用的,对每一种关系型数据库都合适

作用:客户端连接服务器后,客户端使用SQL语句来操作服务器

SQL的通用语法

1. SQL 语句可以单行或多行书写,以分号结尾。

2. 可使用空格和缩进来增强语句的可读性。

3. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。

4. 3 种注释

         * 单行注释: -- 注释内容 或 # 注释内容(mysql 特有)

         * 多行注释: /* 注释 */

(注意:单行注释中--后面要加上空格才能跟注释内容,这样才算是单行注释)

SQL语句分类

SQL语句分类:DDL,DML,DCL,DQL

1)DDL(Data Definition Language):

数据定义语言,是对数据库或表结构的操作,关键字:create, drop,alter 等

2)DML(Data Manipulation Language):

数据操纵语言,是对表记录的操作,更新,包括增,删,改三个操作关键字:insert, delete, update 等

3)DQL(Data Query Language):

数据查询语言,是对表记录的查询,关键字:select, where 等

4)DCL(Data Control Language):

数据控制语言,对用户的创建和授权(略),用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT(授权), REVOKE(回收权限) 等

DDL语句

数据库操作

查看所有数据库

show databases;

可以看出默认MySQL服务器上有四个数据库,分别是information_schema、mysql、performance_schema、test,

数据库information_schema,提供了访问数据库元数据的方式。 元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等

数据库mysql,这个是MySQL的核心数据库,里面记录数据库用户、权限、关键字等核心的管理信息。

数据库performance_schema主要用于收集数据库服务器性能参数

数据test,是安装时候创建的一个测试数据库,是一个完全的空数据库,没有任何表,可以删除

创建数据库

1.最基础的创建数据库语句

create database 数据库名称;

例子:create database db1;

2.指定字符集和判断是否存在和设定校对规则

create database [if not exists] 数据库名称  [character set 字符集][collate 校对规则];

上面语句的if not exists和character set字符集和collate 校对规则是可写可不写的意思,所以加上大括号

实际运用:

* 创建db1数据库,判断如果不存在,再创建:

         * create database if not exists 数据库名称;

* 创建db2数据库,并指定字符集

         * create database 数据库名称 character set 字符集名;

           例子:create database db2 character set utf8 ;

* 创建db3数据库,判断是否存在,并指定字符集为gbk

         * create database if not exists db3 character set gbk;

* 创建db4数据库,判断是否存在,并指定字符集为utf8,且指定校对规则

其实每种字符集就不同的校验规则与之对应,使用不同的校验规则,在我们对后面进行数据库语句检索的时候产生的效果是很不一样的,比如说utf8对应的三种校对规则utf8_general_ci、utf8_general_cs和utf8_bin

utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。

utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果

utf8_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容

所以当你执行SELECT * FROM table WHERE txt = 'a'这条语句时,如果你指定的是utf8_general_cs或者utf8_bin这个校对规则,你就找不到 txt = 'A' 的数据库表记录,如果你指定的是utf8_general_ci 则可以

这里要注意:(表创建时没有指定字符集,则会默认使用数据库的字符集,数据库的字符集没有指定,则会默认使用数据库服务器的字符集)

查看创建数据库定义语句

show create database 数据库名称;

修改数据库

修改数据库字符集

alter database 数据库的名字 character set 字符集;

例子:alter database db1 character set gbk;

将db1数据库字符集从原来的utf8变为gbk

删除数据库

drop database  [IF EXISTS] 数据库名称;

例子:drop database IF EXISTS db1;

如果存在数据库db1,则删除,不存在就不会执行删除操作,防止不存在数据库db1时删除报错

使用数据库

use 数据库名称;

查询当前正在使用的数据库

select database();

数据库表的操作

查看所有表

show tables;

查询数据库所有的表名称

mysql数据库里有24张表

查看表结构

desc 表名;

查看表的创建语句

show create table 表名;

创建表

格式如下:

create table 表名(
    列名1 数据类型1,
    列名2 数据类型2,
    ....
    列名n 数据类型n
);

注意:最后一列,不需要加逗号(,)

列的数据类型说明

总体来说mysql数据库包含数值型、字符串类型、日期和时间类型这么几大类

数值型:

数值类型中又细分为整数类型、浮点数类型、定点数类型和位类型

分别是tinyint、smallint、mediumint、int和bigint

整数类型占用字节范围
TINYINT1有符号:[-128,127] 或无符号:[0,255]
SMALLINT2有符号:[-32768,32767]或无符号:[0,65535]
MEDIUMINT3有符号:[-8333608,8388607]或无符号:[0,1677215]
INT、INTEGER4有符号:[-21亿多,21亿多]或无符号:[0,42亿多]
BIGINT8很大,19位数字的范围

所有整数类型都有一个可选的属性unsigned(无符号),此时上限取值是原来的2倍

还有一个属性是auto_increment(自增),该属性只能用于整数类型

浮点数类型

浮点数类型字节范围
FLOAT4[1.175494351E-38,3.402823466E+38]
DOUBLE8[2.2…E-308,1.7…E+308]

定点数类型

定点数类型字节范围
DECIMAL(M,D)M+2最大取值范围与DOUBLE相同,有效范围由M,D决定

位类型

位类型字节范围
BIT(M)1-8最小值BIT(1),最大值BIT(64)

  浮点数和定点数都可以用(M,D)的方式来进行表示。
(M,D)表示该值一共显示M位数字(整数位+小数位),其中有D位小数。

  例如:score  double(5,2):代表有五位数,其中两位是小数,所以说最大值就是999.99

  • M:精度
  • D:标度
  • 注意在一些表述货币等精确数字的场景必须使用DECIMAL类型。
    BIT类型用来存放多为二进制数,数据在插入BIT类型字段时,首先会转换成二进制数。因此,直接使用SELECT命令将不会看到结果。可以用bin()或hex()函数进行读取。

字符串类型

MySQL中提供了多种对字符数据的存储类型

字符串类型描述
CHAR(M)M为0-255之间的整数
VARCHAR(M)M为0-65535之间的整数
TINYBLOB允许0-255字节
BLOB允许0-65535字节
MEDIUBLOB允许0-167772150字节
LONGBLOB允许0-4294967295字节
TINYTEXT允许0-255字节
TEXT允许0-65535字节
MEDIUMTEXT允许0-167772150字节
LONGTEXT允许0-4294967295字节
VARBINARY(M)允许长度0-M个字节的边长字节字符串
BINARY(M)允许0-M个字节的定长字节字符串

这里要注意一下char和varchar字符串类型的区别:

char指的是固定长度字符串,长度指的是字符的个数,如果存储数据的长度不足指定长度(指的是列类型后面括号里面自己设定                    的长度,则以空格的形式补足到指定长度!适合身份证号码

varchar是可变长度字符串,指的是存储数据的长度如果不足指定长度,则不会补足到指定长度,适合用户名,密码等

例如:存储字符串“abc”,CHAR(5)占用了5个字节,而VARCHAR(5)占用3个字节。

日期时间类型

  • 表示年月(yyyy-MM-dd)用DATE
  • 表示年月日时分秒(yyyy-MM-dd HH:mm:SS),用DATETIME
  • 表示时分秒(hh:mm:ss),用TIME
日期时间类型字节范围
DATE41000-01-01到9999-12-31
DATETIME81000-01-01 00:00:00到9999-12-31 23:59:59
TIMESTAMP419700101080001到2038年某个时刻
TIME3-838:59:59到838:59:59
YEAR11901到2155

 这里要注意一下TIMESTAMP时间类型,如果将来不给这个字段赋值,或赋值是null,则默认是系统当前时间来自动赋值,这是它最大的特点

例子:创建一张student表

复制表操作

create table 表名 like 被复制的表名;

删除表

不用判断表是否存在语句:drop table 表名;
判断表是否存在语句:drop table  if exists 表名 ;

修改表名

alter table 表名 rename to 新的表名;

或者

rename table 原表名 to 新表名;

修改表的字符集

alter table 表名 character set 字符集名称;

添加列

alter table 表名 add 列名 列类型;

如果是添加多列:

alter table 表名 add (

      列名 列类型(长度),

      列名2 列类型(长度),

      ...

);

修改列名称和类型

alter table 表名 change 列名 修改后的新列名 新数据类型;

修改列的类型

alter table 表名 modify 列名 新数据类型;

删除列

alter table 表名 drop 列名;
   

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值