目录

 

SQL的基本概念

SQL的通用语法

SQL语句分类

DDL语句

数据库操作

查看所有数据库

创建数据库

查看创建数据库定义语句

修改数据库

删除数据库

使用数据库

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

数据库表的操作

查看所有表

查看表结构

查看表的创建语句

创建表

列的数据类型说明

复制表操作

删除表

修改表名

修改表的字符集

添加列

修改列名称和类型

修改列的类型

删除列


SQL的基本概念

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

SQL SERVER字符编码码值 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;

SQL SERVER字符编码码值 sql语句编码_SQL SERVER字符编码码值_02

可以看出默认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 则可以

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

SQL SERVER字符编码码值 sql语句编码_SQL_03

查看创建数据库定义语句

show create database 数据库名称;

SQL SERVER字符编码码值 sql语句编码_数据库_04

修改数据库

修改数据库字符集

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

例子:alter database db1 character set gbk;

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

SQL SERVER字符编码码值 sql语句编码_数据库_05

删除数据库

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

例子:drop database IF EXISTS db1;

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

SQL SERVER字符编码码值 sql语句编码_表名_06

使用数据库

use 数据库名称;

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

select database();

SQL SERVER字符编码码值 sql语句编码_数据库_07

数据库表的操作

查看所有表

show tables;

查询数据库所有的表名称

mysql数据库里有24张表

SQL SERVER字符编码码值 sql语句编码_SQL SERVER字符编码码值_08

查看表结构

desc 表名;

SQL SERVER字符编码码值 sql语句编码_SQL_09

查看表的创建语句

show create table 表名;

SQL SERVER字符编码码值 sql语句编码_表名_10

创建表

格式如下:

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-31DATETIME81000-01-01 00:00:00到9999-12-31 23:59:59TIMESTAMP419700101080001到2038年某个时刻TIME3-838:59:59到838:59:59YEAR11901到2155

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

例子:创建一张student表

SQL SERVER字符编码码值 sql语句编码_表名_11

复制表操作

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

SQL SERVER字符编码码值 sql语句编码_mysql_12

删除表

不用判断表是否存在语句: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 列名;