1.概述:
SQL语言(Structure Query Language):结构化查询语言;SQL被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后来被国际标准组织(ISO)采纳为关系数据库语言的国际标准。
SQL是一种标准化的语言,它允许你在数据库上执行操作,如创建项目、查询内容、更新内容、并删除条目等操作。
create(创建)、read(查)、update(修改)、delete(删)通常称为CRUD操作。
2.语句分类
DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等。
DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据)。
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别。
DQL(Data Query Language):数据查询语言,用来查询记录(数据)。
3.DDL操作数据库(sql语句以;结束)
1.创建:
创建新的数据库:(例:我定义了一个叫mysql1的数据库);
mysql> create databaes mysql1;
2.查看:
查看当前数据库服务器中的所有数据库//show databases;
mysql> show databases;//查看当前所有的数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| mysql1 |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)
查看当前当前数据库的定义信息//show create database mysql1;
mysql> show create database mysql1;
+----------+-----------------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+-----------------------------------------------------------------------------------------------+
| mysql1 | CREATE DATABASE `mysql1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ |
+----------+-----------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
3.修改:
查看当前数据库,并把当前数据库(mysql1)的字符集改为utf8;//alter database mysql1 character set utf8;
mysql> alter database mysql1 character set utf8;
Query OK, 1 row affected, 1 warning (0.06 sec)
4.删除:
删除该数据库// drop database mysql1;
mysql> drop database mysql1;
Query OK, 2 rows affected (0.14 sec)
5.其他语句:
查看当前使用的数据库;//select databases();
mysql> select database();//显示现在在mysql1数据库当中
+------------+
| database() |
+------------+
| mysql1 |
+------------+
1 row in set (0.00 sec)
切换数据库// use +库名;
4.DDL操作表
1.创建新表(前提是在数据库中创建新表)// create table +表名(字段1 字段类型(长度) 约束,字段2 字段类型 约束,........);
代码演示为:
mysql> create table biao(
-> id int, //id为int型
-> name varchar(20), //name为可变的字符类型(长度为20)
-> sex varchar(6),
-> tel varchar(20)
-> );
Query OK, 0 rows affected (0.07 sec)
1.常用的数据类型:
int:整型
double:浮点型 ,例如double(4,2)表示这个数最多4位,其中必须有2位小数,及最大数为99.99;
char:固定长度的字符串类型,char(9)-“aaa”-该字符串占9位;
varchar:可变长度字符串类型,varchar(10)-"aaa"-该字符串占3位;
text:字符串类型;
blob:字节类型;
date:日期类型,格式为:year-month-day;
time:时间类型,格式为:hour:minute:second
timestamp:时间戳类型 year-month-day hour:minute:second 会自动赋值
datatime:日期时间类型 year-month-day hour:minute:second
常用的约束:
主键约束:primary key--------识别本行数据
唯一约束:unique key---------这列内容不能重复
非空约束:not null--------------这列内容不能为空
默认约束:default--------------指的是不指定的时候给的默认值
外键约束:foreign key--------
自动增长:auto_increment---指的是每增加一条数据,本列的值会自动加一
2.当前数据库中的所有表////show tables;
mysql> show tables;
+------------------+
| Tables_in_mysql1 |
+------------------+
| biao |
+------------------+
1 row in set (0.00 sec)
3.查看表的字段信息
mysql> desc biao;//当前查看biao的字段信息
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | varchar(6) | YES | | NULL | |
| tel | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
4.在该表的基础上增加一个“备注”列
mysql> alter table biao add 备注 ;
Query OK, 0 rows affected (0.12 sec)
Records: 0 Duplicates: 0 Warnings: 0
5.删除“备注”列
mysql> alter table biao drop 备注;//删除备注列
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0
6.更改表名为biaoge
mysql> rename table biao to biaoge;//将biao(此表的名称)更改为biaoge
Query OK, 0 rows affected (0.11 sec)
7.查看表格的创建细节
mysql> show create table biaoge;//查看biaoge的创建细节
+--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| biaoge | CREATE TABLE `biaoge` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`sex` varchar(6) DEFAULT NULL,
`tel` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
8.修改表的字符集为gbk
mysql> alter table biaoge character set gbk;//将biaoge的字符串类型转换成gbk格式
Query OK, 0 rows affected (0.09 sec)
Records: 0 Duplicates: 0 Warnings: 0
9.修改列名
mysql> alter table biaoge change name username varchar(20);//将name更改为username
Query OK, 0 rows affected (0.18 sec)
Records: 0 Duplicates: 0 Warnings: 0
10.删除现有的表
mysql> drop table biaoge;//删掉此biaoge
Query OK, 0 rows affected (0.11 sec)
5.DML操作
DML 是对表中的数据进行增、删、改的操作。不能与DDL混淆了。
主要有:insert(增)、delete(删)、uptade(改)
在mysql 中,字符串类型和日期类型都要用单引号括起来。
空值:null
(1)插入操作:insert
语法:insert into(可省略不写) 表名(列名1,列名2,列名3.....)values(列值1,列值2,列值3......);
注意:列名与列值的类型、个数、顺序要一一对应起来
可以把列名当作java中的形参,把列值当作实参
参不能超出列定义的长度
如果插入空值,使用null
插入日期和字符一样,都使用引号括起来
(2)修改操作:update
语法:update 表名 set 列名1=列值1,列名2=列值2...where 列名=值
(3)删除操作:delete
语法:delete 表名 where 列名=值