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 基本操作的更多相关文章

  1. Python mysql sql基本操作

    一.创建数据库,编码格式为utf-8 create database s12day9 charset utf8; 二.表操作 1.创建表 use s12day9; create table stude ...

  2. MYSQL基础笔记(二)-SQL基本操作

    SQL基本操作 基本操作:CRUD,增删改查 将SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: Create da ...

  3. {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句

    MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...

  4. mysql数据库基本操作sql语言

    mysql的启动与关闭 启动 /etc/init.d/mysql start 多实例使用自建脚本启动 2种关闭数据库方法 mysqladmin -uroot -p密码 shutdown #优雅关闭/e ...

  5. sql 基本操作

    SQL基本操作   一数据类型1整数型 int2精确数值型 decimal(n,p)n为总位数,p为小数位数3浮点型 float4字符型char(n)n最大为4,varchar(n)5日期型datat ...

  6. Atitit.软件GUIbutton与仪表盘--db数据库区--导入mysql sql错误的解决之道

    Atitit.软件GUIbutton与仪表盘--db数据库区--导入mysql sql错误的解决之道 Keyword::截取文本文件后部分 查看提示max_allowed_packet限制 Targe ...

  7. Oracle SQL 基本操作之 用户权限管理方法

     Oracle SQL 基本操作之 用户权限管理方法 最近把有关用户操作和权限管理的东西整理了一下,虽然不少博客都有过类似的整理,但是自己发现他们的内容或多或少都有些错误.于是,本人亲自对每条语句进行 ...

  8. mysql sql语句大全(转载)

      1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 ...

  9. MySQL:MySQL的基本操作

    1.数据库登录 格式:mysql -h主机地址 -u用户名 -p用户密码 -P端口 -D数据库 -e “SQL内容” [root@wulaoer ~]# mysql -uroot -p  2.修改密码 ...

随机推荐

  1. mac brew 使用教程

    brew services list                  #查看系统通过 brew 安装的服务 brew services cleanup               #清除已卸载无用的 ...

  2. WEB测试重点及视频教程

    WEB测试重点如下: 1.WEB测试基础-2.理解网络协议-3.HTTP协议详解-4.WEB前段分析-5WEB安全性测试-6.WEB兼容性及可用性测试. 1.通常需要承受长时间的大量操作,因此web项 ...

  3. 7.26T1四分图匹配

    四分图匹配 题目描述 一天晚上,zzh 在做梦,忽然梦见了她. 见到她,zzh 也不去看她,只顾低头自语…… “噫,OI 这个东西,真是无奇不有.” “嘿,你又学了什么?” “嗯,学到了一种算法,”z ...

  4. hive 调优(一)coding调优

    本人认为hive是很好的工具,目前支持mr,tez,spark执行引擎,有些大公司原来封装的sparksql,开发py脚本,但是目前hive支持spark引擎(不是很稳定,建议Tez先),所以离线还是 ...

  5. 用tecplot提取数据用于重构模型

    本方法还有诸多不完善的地方,转换代码转换格式之后还是需要自己手动分割txt文件,如果数据量太大,手动操作很是辛苦.现在只能得到点的数据,如何重构几何还是问题,UG貌似可以,欢迎交流. 首先在tecpl ...

  6. 2018-2019-2 20165210《网络对抗技术》Exp7 网络欺诈防范

    2018-2019-2 20165210<网络对抗技术>Exp7 网络欺诈防范 一.实验目标:本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法. 二.实验内容: ...

  7. LC 983. Minimum Cost For Tickets

    In a country popular for train travel, you have planned some train travelling one year in advance.  ...

  8. LC 986. Interval List Intersections

    Given two lists of closed intervals, each list of intervals is pairwise disjoint and in sorted order ...

  9. 【如何设置IIS程序池的回收时间,才能最大程度的减少对用户的影响?】

    作为.Net开发人员,其实对IIS的应用程序池知之甚少,前段时间被问到一个问题: 对于互联网web应用,如何在用户毫无感知的情况下回收程序池?(对用户产生最小的影响) 简单理解IIS应用程序池 应用程 ...

  10. c# 线程异步处理

    public class AsyncHelper { private static readonly TaskFactory _myTaskFactory = new TaskFactory(Canc ...