MySQL 数据库

【数据库MySQL】

数据库客户端工具区别

Sqlyod 用户数据的导入及导出

Navicat 能链接任意类型的数据库

Workbench 官方提供的客户端工具

***注意事项:在DOS命令行中往数据库下的table 表中插入中文字符的字段值

A、打开MySQL安装目录,找到my.ini文件,将[mysql]default-character-set=utf8;改成[mysql]default-character-set=gbk;

B、创建数据库,字符集设为utf8; create database if not exists dbl charset utf8;

C、使用数据库; use dbl;

D、创建表,字符集设为gbk;  create table if not exists demo(

age int,

name varchar(50)

)charset gbk;

E、插入数据;  insert into demo values(18,'张三')(19,'张无忌');

F、查询数据;  select * from demo;

G、更新数据; update demo set name='张三丰' where age=18;

Auto_increment 设置自增

Default 数值 设置默认值

Primary key 设置主键 主键值不能重复

auto_increment 自动增长 自动增长必须要有索引key 字段类型必须为整数型

Unique唯一键

Dos命名

1)net start mysql 启动mysql

2)net stop mysql 关闭mysql

3)mysql -h localhost -u root -proot 登录连接数据库 (完整格式)mysql.exe -h localhost -p3306 -u root -proot

4)show databases; 显示所有数据库 show create database 数据库名字;显示数据库创建过程

5)use (数据库名)mysql; 使用数据库

6)show tables;显示数据库下所有的表

7)select * from userG; 格式显示查询user表下所有信息

8)update user set password=password('1234')where user='root';修改user表,将root 用户的密码改成1234

9)flush privileges; 刷新权限

10)exit;/ quit;/ q;退出(三种退出)

11)?寻求帮助,如?show ;

、数据库语言

1)DDL 定义语言

*创建数据库 (格式):Create database 数据库名字 charset/character set 编码格式:如utf8

CREATE DATABASE IF NOT EXISTS school;//IF NOT EXISTS 表示不存在再创建

*更新数据库 Alter database 数据库名字 charset gbk;

*删除数据库 Drop database 数据库名字;

*创建表方法一

use 数据库名;(表所在的数据库名)

create table if not exists 表名(

字段名 类型|属性|约束 索引 注释,

字段名 类型 索引 注释

)表类型|表选项;

:use school

create table if not exists student(

name varchar(10),

gender varchar(10),

number varchar(10),

age int(4)

)charset utf8;

*创建表方法二

create table if not exists 数据库名.表名(

字段名 类型|属性|约束 索引 注释,

字段名 类型 索引 注释

)表类型|表选项;

*显示表

use 数据库名;(表所在的数据库名)

show tables;//显示当前数据库下所有表

show tables like '表名';//显示当前数据库下特定表

*显示查看表的创建过程

show create table 表名;

*显示表的结构

Desc/describe/show columns from 表名;

*修改表名

rename table 表名 to新表名;

*修改表选项

Alter table 表名 表选项 值; alter table student charset gbk;

*添加表字段

alter table 表名

add 字段名 属性|约束

位置(表头);

alter table my_student

add id int(10)

first;

*修改表字段属性

alter table 表名

modify 字段名 属性 位置;

列alter table my_student

modify name char(15)after id;

*修改字段名

alter table 表名

change 字段名 新字段名 属性|约束;

alter table my_student

change gender sex varchar(5);

*删除字段

alter table 表名

drop 字段名;

alter table my_student

drop ids;

*删除表

drop table 表名;

*插入字段内容(全部字段)

insert into 表名 values(全部字段值);

*插入字段内容(部分字段)

insert into 表名 (字段名) values(对应字段值);

*查询字段内容

select */字段名 from 表名 where 条件;(条件可选)

*更新数据

update 表名 set 字段名 =修改后的字段数据值 where 条件;

可以加  表名 between 从开始位 and 到结束位

*删除数据

如果不带where条件的删除表 自增当前值依然从原来的基础上进行

delete from 表名 where 条件;

删除表的全部数据 (慎用)

Truncate table 表名 ; 自增恢复到初始值重新开始

创建主键

1 Primary key 设置主键

2 在表最后设置主键 Primary key (字段值,字段值)

3 也可以在表外创建主键

Alter table 表名 add Primary key(要设置主键的值名);

删除主键

  Alter table 表名 drop Primary key;

创建外键 foreign key,

  1. 外键要存在: 首先必须保证表的存储引擎是innodb(默认的存储引擎): 如果不是innodb存储引擎,那么外键可以创建成功,但是没有约束效果.
  2. 外键字段的字段类型(列类型)必须与父表的主键类型完全一致.
  3. 一张表中的外键名字不能重复.
  4. 增加外键的字段(数据已经存在),必须保证数据与父表主键要求对应.

创建表的时候增加外键: 在所有的表字段之后,使用foreign key(外键字段) references 外部表(主键字段)

 

在新增表之后增加外键: 修改表结构

Alter table 表名 add [constraint 外键名字] foreign key(外键字段) references 父表(主键字段my);

删除外键语法

Alter table 表名 drop foreign key 外键名; -- 一张表中可以有多个外键,但是名字不能相同

Unique key唯一键

1 Unique  在数值后设置唯一键

2 在表最后设置主键 Unique key (字段值,字段值)

也可以在表外创建主键

3 Alter table 表名 add Unique key (要设置主键的值名);

复制一个表 //注意两个表的结构要相同

Create table 新表名 like 要复制的表名; //复制旧表内的结构

Insert into 新表名 select * from 要复制的表名; //复制旧表内的内容

2)DML 操作语言

 

3)DQL 查询语言

Select distinct * from 表名 删除重复的数值

取别名

给表取别名    表名 as 别名

给字段取别名  字段名 as 别名

:字段别名

Select id

number as学号

Name as 姓名

Sex 性别 from my_student;

查询条件

Select * from 表名 where 查询条件

where 查询条件

*比较运算符 > < = <> != >= <=

*逻辑运算符 and /&& /or/ ||/ not /between and / in / not in / like

列:

Select * from 表名 where height between 180 and 190;

Group by 分组

Group by:分组的意思, 根据某个字段进行分组(相同的放一组,不同的分到 不同的组

基本语法: group  by 字段名

Group by 字段名

列:

Select * from  my_student group by sex;

分组的意思: 是为了统计数据(按组统计: 按分组字段进行数据统计)

SQL提供了一系列统计函数

Count(): 统计分组后的记录数: 每一组有多少记录

Max(): 统计每组中最大的值

Min(): 统计最小值

Avg(): 统计平均值

Sum(): 统计和

order by 排序

Order by: 排序, 根据某个字段进行升序或者降序排序, 依赖校对集.

使用基本语法

Order by 字段名 [asc|desc]; -- asc是升序(默认的),desc是降序

 

多表连接查询

 内连接

Select 需要查询的信息 from 表名 join 表名 on 条件

或者Select 需要查询的信息 from表名,表名 where 条件

列:SELECT my_student.name,age,my_class.name

FROM my_student   

JOIN my_class

ON my_student.c_id = my_class.id;

外链接 左外连接

SELECT 要查询的信息 FROM 表名 LEFT JOIN 表名ON 条件

列:

SELECT c.name,c.age,s.name

FROM my_student AS c

LEFT JOIN my_class AS s

ON c.c_id =s.id;

右外链接用

SELECT 要查询的信息 FROM 表名  RIGHT JOIN 表名ON 条件

limit分页查询数据库

select * from 表名 limit [offset,] rows

  一般是用于select语句中用以从结果集中拿出特定的一部分数据。

  offset是偏移量,表示我们现在需要的数据是跳过多少行数据之后的,可以忽略;rows表示我们现在要拿多少行数据。

栗子:

  ①select * from mytbl limit 10000,100

    上边SQL语句表示从表mytbl中拿数据,跳过10000行之后,拿100行

  ②select * from mytbl limit 0,100

    表示从表mytbl拿数据,跳过0行之后,拿取100行

  ③select * from mytbl limit 100

    这条SQL跟②的效果是完全一样的,表示拿前100条数据

用处:

  我目前用到的地方是数据库查询分页,比如前台要展示数据库中数据,需要后台实现分页,传入数据要有“页码page”跟“每页数据条数nums”。

  对应SQL大概是这样子:select * from mytbl order by id limit (page-1)*nums,nums

4)DCL 控制语言

5)其他语言

1使用mysqladmin命令修改root账户密码:

格式:mysqladmin -u用户名 -p旧密码 password 新密码

例子:mysqladmin -uroot -p123456 password 123

2使用SET命令修改用户密码

u 首先登录MySQL。

格式:mysql> set password for 用户名@localhost = password('新密码');

例子:mysql> set password for root@localhost = password('123');  

3删除用户:

DROP USER student@localhost;  

*%表示(0-n)任意个字符,_表示单个字符 通配符 例句:show databases like'my%';show databases like '__t%';

*+特殊字符(如%..)转义字符

4mysql服务器内部对象分为四层:

系统(DBMS)——>数据库(Database)——>数据表(Table)——>字段(Field)

窗竹影摇书案上,野泉声入砚池中。 少年辛苦终身事,莫向光阴惰寸功
原文地址:https://www.cnblogs.com/qhantime/p/10731741.html