(三)mysql SQL 基本操作
MySQL服务器对象
mysql 服务器对象内部分成了 4 层:
系统(DBMS)---->数据库(DB)---->表(Table)---->字段(Field)
mysql 的基本操作
基本操作:CRUD ;
将SQL的基本操作根据操作对象进行分类,分为三类:库操作,表(字段)操作,数据操作;
SQL的注释
- SQL注释
mysql> -- 双中划线+空格 ,代表单行注释 ;
-> ;
Query OK, 0 rows affected
mysql> #单行注释也可使用 #,不需要加空格 ;
-> ;
Query OK, 0 rows affected
库操作
对数据库进行 CRUD ;
新增数据库语法:create database 数据库名字 [库选项]
;
库选项:用来约束数据库,分为两个选项 :
① 字符集设定 :charset/character set 具体字符集 ;在中文中常用的字符集有:gbk,utf8 ;用于指定表的字符集 ;
②校对集设定:collate 具体校对集(数据比较规则) ,默认校对集是跟着字符集走的;校对集是排序用的!
SQL 语句演示
--------------创建数据库-------------------
数据库名字中不能含有关键字,如果非要使用关键字作名字,则使用 反引号 ( ` )括起来
-- 创建数据库
mysql> create database mydatabase_1 charset utf8 ;
Query OK, 1 row affected
-- 用关键字做作数据库名字,且没有使用反引号括起来,报错
mysql> create database database charset utf8;
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL
server version for the right syntax to use near 'database charset utf8' at line 1
-- 用关键字做作数据库名字,使用反引号括起来,通过
mysql> create database `database` charset utf8;
Query OK, 1 row affected
```
数据库是支持中文作为名字的,但是需要先告诉mysql服务器你的字符集,不然它识别不出来中文
```sql
-- 告诉mysql服务器,我们使用的字符集,不然它识别不出来中文
mysql> set names utf8;
Query OK, 0 rows affected
-- 然后再使用中文作为数据库的名字
mysql> create database 中国 charset utf8;
Query OK, 1 row affected
--------------小结-------------------
① 当执行完创建数据库的sql语句之后,会在数据库系统中,增加对应的数据库信息;
② 会在保存数据库的文件夹下面的 data
目录下,创建一个对应数据库名字的文件夹;
③ 在该对应文件下,会有一个 opt
文件,里面保存了数据库的库选项 ;
--------------查看数据库-------------------
① 查看所有数据库:show databases ;
-- 查看所有数据库
mysql> show databases ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| database |
| mysql |
| test |
| user |
| 中国 |
+--------------------+
13 rows in set
② 查看部分数据库,类似于模糊查询 :show databases like 'pattern' ;
pattern
:是个匹配模式,有2种占位符 :
% : 代表匹配多个任意字符 ;
_ : 代表匹配单个任意字符 ;
但是 _
也是可以作为数据库名字的,因此要想查询 _
得使用转义 \_
;
-- _ 代码占位符,因此可以查询出多个数据库
mysql> show databases like 'my_%';
+-----------------+
| Database (my_%) |
+-----------------+
| mybatisday01 |
| mydatabase_1 |
| mysql |
+-----------------+
3 rows in set
-- \_ 代表数据库的名字,因此一个没有查出来,因为我们没有 my_xxx 的数据库 ;
mysql> show databases like 'my\_%';
Empty set
③ 查看数据库的创建语句:show create database 数据库名字
;
注意,查询出来的时候数据库优化过后的sql
语句,因此,和我们创建时候,写的不一样 ;
mysql> show create database user ;
+----------+---------------------------------------------------------------+
| Database | Create Database |
+----------+---------------------------------------------------------------+
| user | CREATE DATABASE `user` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+---------------------------------------------------------------+
1 row in set
--------------更新数据库-------------------
数据库的名字不可以更改,在低版本的mysql
中可以更改,高版本中修改为不可修改!
语法:alter database 数据库名字 [库选项]
;
字符集:charset/character set [=] 字符集
;
校对集:collate 校对集
;
其中校对集是依赖字符集的,修改字符集,校对集会自动的更改 ;
mysql> alter database 中国 charset = gbk ;
Query OK, 1 row affected
--------------删除数据库-------------------
数据库的删除是不可逆操作,,因此,执行删除的时候,需要万分注意 ;
语法 :drop database 数据库名字 ;
mysql> drop database 中国 ;
Query OK, 0 rows affected
删除数据库的时候,会将之前创建数据库的时候,产生的文件夹删除掉;
表(字段)操作
--------------创建表---------------
# 语法:
-- 如果不想显式的指明数据库,则使用 use 数据库名字,进入到某个具体的数据库中
create table [if not exists] 数据名.表名( -- 显式的指明数据库
字段,
字段 -- 最后一个字段后面不需要加 逗号 ,可以看出是方法的最后一个参数
) [表选项];
Query OK, 0 rows affected
if not exists
: 起检查作用,如果表不存在,则建立表,表存在,则不建立;
表选项:
① charset/character set 字符集
; 指定表中字段内容,也就是数据单元的字符集 ;
② collate
校对集;
③ 存储引擎 :engine
具体的存储引擎 ;(常用的有 innodb,myisam
)
sql 演示:
mysql> use user ; -- 进入 user 数据库
-> create table student(
-> name varchar(10),
-> age int ,
-> genger varchar(10)
-> ) charset utf8 ;
Query OK, 0 rows affected
当上面的sql
执行以后,会在对应的数据库中,创建出表,并且在对应的数据库文件夹下面 ,会产生对应的 表的结构文件
(跟存储引擎有关);
--------------查看表---------------
跟查看数据库,基本别无二致 ;但是多一个查询字段的操作
sql 演示:
# 查询数据库中的所有表
mysql> show tables ;
+--------------------+
| Tables_in_database |
+--------------------+
| student |
+--------------------+
1 row in set
# 模糊查询,亦可以使用 '%t' ,但是这样会很慢,其中 缘由是这样查,不能使用 索引;
mysql> show tables like 'stud%' ;
+----------------------------+
| Tables_in_database (stud%) |
+----------------------------+
| student |
+----------------------------+
1 row in set
# 查询 表的创建语句,可以使用 \g 代替 ; \G 表示将查询结果循环 90°
mysql> show create table student ;
+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
`name` varchar(10) default NULL,
`age` int(11) default NULL,
`genger` varchar(10) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set
#查询表中的字段,三种 方法
# desc 表名 ,describe 表名,show columns from 表名
mysql> desc student ;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| name | varchar(10) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| genger | varchar(10) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
3 rows in set
mysql> describe student ;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| name | varchar(10) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| genger | varchar(10) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
3 rows in set
mysql> show columns from student ;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| name | varchar(10) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| genger | varchar(10) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
3 rows in set
--------------修改表---------------
修改表,分为2部分,一部分是修改 表本身,另一种是修改 表的字段 ;
sql 演示 :
① 修改表本身
# 修改表名
# 语法:rename table 老表名 to 新表名 ;
mysql> rename table student to my_student ;
Query OK, 0 rows affected
# 修改表选项
# 语法:alter table 表名 表选项 [=] 值 ;
mysql> alter table my_student charset = gbk ;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
② 修改表的字段
涉及的操作很多:添加字段 、删除字段、重命名字段、修改字段属性 ;
sql 演示 :
# 新增字段
# 语法:alter table 表名 add [column] 字段名 数据类型 [列属性] [位置] ;
# 位置,可以放在表中任意位置上; first 表示第一个;after 字段名 ,表示放在某个字段后面 ;
# 默认是放在最后一个字段后面 ;
mysql> alter table my_student
-> add column id int
-> first ;
Query OK, 0 rows affected
# 修改字段 一般修改是的字段的列属性或者数据类型
# 语法:alter table 表名 modify 字段名 数据类型 [列属性] [位置] ;
mysql> alter table my_student modify name char(10) ;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
# 重命名字段
# 语法:alter table 表名 change 旧字段名 新字段名 数据类型 [列属性] [位置] ;
mysql> alter table my_student change genger sex char(2) first ;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
# 删除字段
# 注意:删除字段,会将该字段列的值全部一并删除,这个操作是不可逆的!!
# 语法:alter table 表名 drop 字段名 ;
mysql> alter table my_student drop id ;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
--------------删除表---------------
sql 演示:
# 删除表,可以一次性删除多张表 ;
# 语法:drop table 表名1,表名2 ... ;
mysql> drop table my_student ;
Query OK, 0 rows affected
删除表以后,创建表时候,在数据库对应的文件夹下面生成的表的约束文件,也一并被删除 ;
数据操作
-------------新增数据 ------------
插入数据,非数值数据使用单引号括起来,其实所有数据都可以使用单引号括起来 ;
有两种方法:
① 给全表字段插入数据,要求插入数据的顺序必须和表字段的顺序一致; (可以一次性插入多条数据)
# 新增数据,可以一次性插入多条记录
# 语法:insert into 表名 values(字段值..),(字段值...) ;
mysql> insert into student values('1','yaz','male'),('2','dog','female');
Query OK, 2 rows affected
Records: 2 Duplicates: 0 Warnings: 0
②给部分字段插入只值,但是插入值的顺序可以更改,根据表名后面的字段的顺序 ;
# 给部分字段插入值,也可以一次性插入多条记录
# 语法:insert into 表名(字段..) values(字段值..) ;
mysql> insert into student(id,name) values('3','nanda');
Query OK, 1 row affected
# 一次性插入多个值
mysql> insert into student(id,name) values('3','nanda'),('22','haha');
Query OK, 2 rows affected
Records: 2 Duplicates: 0 Warnings: 0
-------------查询数据 ------------
# 查询所有字段的值
# 语法:select * from 表名 ;
mysql> select * from student ;
+----+-------+--------+
| id | name | sex |
+----+-------+--------+
| 1 | yaz | male |
| 2 | dog | female |
| 3 | nanda | NULL |
| 3 | nanda | NULL |
| 22 | haha | NULL |
+----+-------+--------+
5 rows in set
# 查询部分字段值
# 语法:select 字段1,字段2 ... from 表名 ;
mysql> select id,name from student ;
+----+-------+
| id | name |
+----+-------+
| 1 | yaz |
| 2 | dog |
| 3 | nanda |
| 3 | nanda |
| 22 | haha |
+----+-------+
5 rows in set
# 根据条件查询
# 语法: select 字段 from 表名where 条件;
mysql> select sex,name from student where id = 22;
+------+------+
| sex | name |
+------+------+
| NULL | haha |
+------+------+
1 row in set
-------------更新数据 ------------
# 按照条件更新
# 语法:update 表名 set 字段= 字段值 [where 条件] ;
mysql> update student set sex = 'male' where name = 'dog' ;
Query OK, 1 row affected -- 如果更新失败,则影响的行数为 0 ;
Rows matched: 1 Changed: 1 Warnings: 0
# 如果更新失败,影响的行数
mysql> update student set sex = 'male' where name = 'dogs' ;
Query OK, 0 rows affected -- 更新失败,没有name 为 dogs 的 人
Rows matched: 0 Changed: 0 Warnings: 0
-------------删除数据 ------------
删除需谨慎,不可逆操作 !!
# 按照 条件是删除数据
# 语法: delete from 表名 [条件];
mysql> delete from student where sex = 'male';
Query OK, 1 row affected
(三)mysql SQL 基本操作的更多相关文章
- Python mysql sql基本操作
一.创建数据库,编码格式为utf-8 create database s12day9 charset utf8; 二.表操作 1.创建表 use s12day9; create table stude ...
- MYSQL基础笔记(二)-SQL基本操作
SQL基本操作 基本操作:CRUD,增删改查 将SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: Create da ...
- {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句
MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...
- mysql数据库基本操作sql语言
mysql的启动与关闭 启动 /etc/init.d/mysql start 多实例使用自建脚本启动 2种关闭数据库方法 mysqladmin -uroot -p密码 shutdown #优雅关闭/e ...
- sql 基本操作
SQL基本操作 一数据类型1整数型 int2精确数值型 decimal(n,p)n为总位数,p为小数位数3浮点型 float4字符型char(n)n最大为4,varchar(n)5日期型datat ...
- Atitit.软件GUIbutton与仪表盘--db数据库区--导入mysql sql错误的解决之道
Atitit.软件GUIbutton与仪表盘--db数据库区--导入mysql sql错误的解决之道 Keyword::截取文本文件后部分 查看提示max_allowed_packet限制 Targe ...
- Oracle SQL 基本操作之 用户权限管理方法
Oracle SQL 基本操作之 用户权限管理方法 最近把有关用户操作和权限管理的东西整理了一下,虽然不少博客都有过类似的整理,但是自己发现他们的内容或多或少都有些错误.于是,本人亲自对每条语句进行 ...
- mysql sql语句大全(转载)
1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 ...
- MySQL:MySQL的基本操作
1.数据库登录 格式:mysql -h主机地址 -u用户名 -p用户密码 -P端口 -D数据库 -e “SQL内容” [root@wulaoer ~]# mysql -uroot -p 2.修改密码 ...
随机推荐
- 前端逼死强迫症系列之javascript
JavaScript 和Python.C#.Java.Ruby一样,都是一门独立的编程语言. 像python.C.Java等都需要解释器,学习它们的语法.而浏览器本身就是javascript的解释器. ...
- codeforces gym #101987B- Cosmetic Survey(floyd)
题目链接: https://codeforces.com/gym/101987/my 题意: 顶点数为$n$,边数为$m$ 求出每个点对$(a,b)$,$a$到$b$的最小路径的最大值 数据范围: $ ...
- Python学习日记(十)—— 杂货铺(全局变量补充、Python参数传递、字符串格式化、迭代器、生成器)
全局变量补充 python自己添加了些全局变量 print(vars()) """结果: {'__name__': '__main__', '__doc__': None ...
- spring事务配置异常
spring事务配置不回滚spring事务管理配置,一般来说都是可以回滚的,最近在开发的过程中遇到了一个异常不回滚的问题,最终找到了原因,贴出来一下 1.首先这里定义一个接口 在接口中定义几个方法 2 ...
- vue实战_从头开始搭建vue工程
写在前面:vue工程入口文件分析 /index.html,/src/main.js,/src/APP.vue /index.html文件示例: <!DOCTYPE html> <ht ...
- richtextbox Ctrl+V只粘贴纯文本格式
只能粘贴剪切板中的TXT内容 并且 不能改变 剪切板的内容1 当用户按下Ctrl+V屏蔽系统的粘贴功能,然后添加自己的功能2019年12月19日 19:34:38 private void richT ...
- 网络文件共享服务—NFS服务
NFS服务 NFS:Network File System 网络文件系统,基于内核的文件系统: Sun公司开发,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,基于RPC(Rem ...
- spaCy 第一篇:核心类型
spaCy 是一个号称工业级的自然语言处理工具包,最核心的数据结构是Doc和Vocab.Doc对象包含Token的序列和Token的注释(Annotation),Vocab对象是spaCy使用的词汇表 ...
- https证书制作及springboot配置https
1.生成秘钥 openssl genrsa -out private.key 2048 2.生成用于申请请求的证书文件csr,一般会将该文件发送给CA机构进行认证,本例使用自签名证书 openssl ...
- 3.1 Go语言基础之指针
区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针. 要搞明白Go语言中的指针需要先知道3个概念:指针地址.指针类型和指针取值. 一.Go语言中的指针 Go语言中的函数传参都是值 ...