本文将为您提供关于MySQL基础操作的详细介绍,我们还将为您解释mysql基础操作命令的相关知识,同时,我们还将为您提供关于C#数据操作系列-1.SQL基础操作、MySQL--基础操作、mysql基础
本文将为您提供关于MySQL基础操作的详细介绍,我们还将为您解释mysql基础操作命令的相关知识,同时,我们还将为您提供关于C# 数据操作系列 - 1. SQL基础操作、MySQL -- 基础操作、mysql 基础操作、mysql 数据库优化课程 ---13、mysql 基础操作(mysql 如何复制表)的实用信息。
本文目录一览:- MySQL基础操作(mysql基础操作命令)
- C# 数据操作系列 - 1. SQL基础操作
- MySQL -- 基础操作
- mysql 基础操作
- mysql 数据库优化课程 ---13、mysql 基础操作(mysql 如何复制表)
MySQL基础操作(mysql基础操作命令)
<h2>数据库级别
1.显示数据库
2.创建数据库
3.使用数据库,进入数据库
4.用户管理
创建用户:
删除用户:
修改用户:
可以进入MysqL的user表中进行更改
也可以
修改密码:
5.用户授权
查看用户权限:
授予用户权限:
撤销用户权限:
权限类型:
对于授权语句中,可以使用通配符,如:
<span>.<span>* 所有数据库
1.显示当前使用的数据库中所有表:
2.创建表
在创建表的同时还可以规定:
defalut <span>1<span>
设置列的自增
auto_increment
自增必须设置到索引列中
自增可以设置起始值和步长
<span>set id auto_increment_increment<span>=<span>2;<span>--<span>起始值
<span>set id auto_increment_offset<span>=<span>2;<span>--<span>步长
<span>
主键
<span>primary <span>key<span>外键将表的一列与另一张表的一列相关联,使这一列的内容只能是相关联的那一列的内容
constraint 外键名 foreign key (本表的某列) references color(其他表的某列);举例
create table student( sid int not null auto_increment primary key,course_id int not null defalut 1,constraint fk_sc foreign key (course_id) references course(cid) );
3.删除表
4.清空表
5.修改表
<span>alter <span>table 表名 <span>add <span>primary <span>key<span>(列名);
删除主键:
<span>alter <span>table 表名 <span>drop <span>primary <span>key<span>;
<span>alter <span>table 表名 modify 列名 类型,<span>drop <span>primary <span>key<span>;
添加外键:<span>alter <span>table 本表 <span>add <span>constraint 外键名称 <span>foreign <span>key 本表外键列 <span>references<span> 引用外键表列;
删除外键:<span>alter <span>table 表名 <span>drop <span>foreign <span>key<span> 外键名称
<span>alter <span>table<span> 表名modify 字段名default 默认值
修改默认值:<span>alter <span>table<span> 表名modify 字段名default 默认值;
删除默认值:<span>ALTER <span>TABLE 表名 <span>ALTER <span>COLUMN 列名 <span>DROP <span>DEFAULT;
6.基本数据类型
7.索引
索引可以加速查询,使用B+Tree实现其索引结构。
普通索引:
<span>create <span>index 索引名 <span>on<span> 表名(列名);
删除索引
<span>drop 索引名 <span>on<span> 表名;
查看索引
show <span>index <span>from 表名;
唯一索引:
<span>create <span>unique <span>index 索引名 <span>on<span> 表名(列名);
删除唯一索引
<span>drop <span>unique <span>index 索引名 <span>on 表名;
主键索引:
<span>alter <span>table 表名 <span>add <span>primary <span>key<span>(列名);
删除主键
<span>alter <span>table 表名 <span>drop <span>primary <span>key;
组合索引:
将多个列组合成一个索引
组合索引的查询是取左的方式,例如查询 列1 and 列2 ,会使用索引,查询列1会使用索引,查询列2不会使用索引。
内容级别
1.增加
2.删除
3.修改
4.查看
5.选择的条件方式
6.排序
7.分组
8.表的连接
<span>select<span> A.name,B.name
<span>from A <span>left <span>join<span> B
<span>on A.nid <span>=<span> B.nid;
以右边的为基础,左边的表都显示,若A中没有对应关系的列则显示为null
<span>select<span> A.name,B.name
<span>from A <span>right <span>join<span> B
<span>on A.nid <span>=<span> B.nid;
两个表互相约束,和上两个方法类似,但把有null的行都去掉了
<span>select<span> A.name,B.name
<span>from A <span>inner <span>join<span> B
<span>on A.nid <span>= B.nid
9.组合
<span>SELECT column_name(s) <span>FROM<span> table1
<span>UNION <span>ALL
<span>SELECT column_name(s) <span>FROM<span> table2;
组合后的列名为第一个select语句中的列名
10.视图
<span>DROP <span>VIEW<span> 视图名
修改视图
将视图名换一个表示的视图
<span>ALTER <span>VIEW 视图名称 <span>AS<span> sql语句;
无法通过对视图的更新来达成对真实表的更新
查询视图
可将视图看作一个表来查询
11.存储过程
创建存储过程:
调用存储过程
有参数的存储过程
<span>set <span>@i2<span>=<span>2<span>;
call p1(<span>2,<span>@i1,<span>@i2<span>);
<span>select <span>@i1,<span>@i2;
删除存储过程
12.函数
内置函数:
MysqL提供了很多内置函数,具体可参考MysqL.com/doc/refman/5.7/en/func-op-summary-ref.html" target="_blank">https://dev.MysqL.com/doc/refman/5.7/en/func-op-summary-ref.html
自定义函数:
删除函数:
使用函数
<span>declare <span>@i <span>int<span>;
<span>select func(<span>2) <span>into <span>@i; <span>--<span>将一个表的信息复制到另一个表
<span>select <span>@i;
13.事务
在 MysqL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
事务就是有多个操作,要么一起执行,要么就都不执行。
执行事务
事务回滚
事务与存储过程结合使用
<span>BEGIN
<span>--<span> WARNING
<span>set p_return <span>= <span>2<span>;
<span>rollback<span>;
<span>END<span>;
START <span>TRANSACTION<span>;DELETE from name_table where name='aaa';insert into name_table(name)values('sfencs');
p_return
14.触发器
触发器的用途为用户对表进行增删改的操作的前或后,同时进行另一个操作。
创建触发器:
<span>CREATE <span>TRIGGER 触发器名 AFTER <span>INSERT <span>ON table1 <span>FOR<span> EACH ROW
<span>BEGIN<span>
...
<span>END除此之外还有删除delete前后和更新update前后这里定义触发器时一般也需要使用delimiter来改变语句结束符号
对于begin和end之间执行的语句,如果想根据想删除,插入,更新顶点数据进行判别,动态的执行相关语句时,那么就要用一种方式来表示数据,使用new和old来表示
当使用insert语句的时候,如果原表中没有数据的话,那么对于插入数据后表来说新插入的那条数据就是new
当使用delete语句的时候,删除的那一条数据相对于删除数据后表的数据来说就是old
当使用update语句的时候,当修改原表数据的时候相对于修改数据后表的数据来说原表中修改的那条数据就是old,而修改数据后表被修改的那条数据就是new
举例:old.name,就是原表中数据中的名字,new.id就是新数据中的id。
删除触发器:
15.sql中的if语句
16.sql中的循环语句
或
或
C# 数据操作系列 - 1. SQL基础操作
0.前言
前篇介绍了一些数据库的基本概念和以及一些常见的数据库,让我们对数据库有了一个初步的认识。这一篇我们将继续为C#数据操作的基础填上一个空白-SQL语句。
SQL(Structured Query Language,结构化查询语言)是一种特定的编程语言,用于管理数据库系统,操作数据甚至编写一些程序。
当然,一方面因为时间问题,一方面因为各大数据库的区别(当然了,还有就是个人对SQL研究并不是那么深)所以这一篇就从SQL的基本操作入手,带领大家一起看看SQL的世界。
1. SQL的分类
在SQL的世界里,被分割为两个部分:DML(Data Manipulation Language 数据操纵语言)、DDL(Database Definition Language 数据定义语言)。当然,也有很多其他的分法,这里参照了机械工业出版社出版的《计算机科学丛书- 数据库系统概念》。
1.1 DML
数据操纵语言,用户可以凭此来访问或者操纵那些被结构化存储起来的数据。DML提供了以下功能:
- 对存储在数据库的数据进行检索(select)
- 在数据库中添加新的数据(insert)
- 修改数据库中的数据(update)
- 删除数据库中的某些数据(delete)
简单的概括起来就是增删改查,对于开发而言这是一项枯燥乏味的工作,当然也是每个程序必不可少的工作。如果你见到这个词:crud,不要诧异,这是开发对增删改查的一种缩写(create,read,update,delete)。
在技术的演变过程中,为了更快更好的增删改查,有一些大牛开发出了一系列的ORM框架,比如C#里最出名的EntityFramework、与Hibernate同源的NHibernate等等。
1.2 DDL
数据定义语言,用户可以用来创建数据库、修改数据库属性、删除数据库,新建表、视图,修改表、视图,删除表、视图等。与DML不同的是,DDL操作的对象从数据转变成了承载数据的实体或者与操作数据的实体。
还有与DML不同的一点是,DDL更多的会使用 create、alter、drop等关键字(分别用来 创建、修改、销毁)。
1.3 方言
如今的城市人们来自五湖四海,有的人用普通话,有的人还是一口流利的家乡话。与之相同的就是在数据库这个江湖里,各大门派都在标准SQL里添加了自己的东西,让SQL成了一个操持着五湖四海的方言的大家族。比如说微软的Transcat-SQL和PL/SQL。
2. 一些简单操作
这里先简单介绍一下通用SQL下的操作:
2.1 创建数据库
create database test;
这是一个简单的创建数据库的SQL语句,这是标准SQL的一部分。效果就是创建一个名字为test的数据库,字符集等属性是系统的默认值。
当然,在SQL Server里可以通过以下方式指定字符集:
create database 数据库名 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; -- 使用gbk
CREATE DATABASE 数据库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; -- 使用utf8
这是在开发过程中最常用的创建数据库方式。
2.2 创建表
数据表是数据库里最重要的一个实体,我们大概演示一下如何通过sql语句创建一个表:
create table demo
(
[key] int identity primary key ,
[name] varchar(20)
)
go
SQL 创建表的格式如下:
create table <表名>
(
[属性名] <类型> [params...配置]
)
如果有第二个属性,则在第一个之后添加一个逗号,然后继续按照格式声明。
其中 属性名和类型是必须的,配置则可有可无。
常见配置项:
- identity 表示该列是个自增列,一般是起始1,增长步长为1
- primary key 表示该列是主键列,只能有一个主键
- not null 表示该字段非空,如果是空值进来则会报错
- unique 表示该字段的值不能出现重复
而数据类型则因为数据库不同会有一些细微的差别,所以这里就不错过多介绍了。
2.3 查询
一个简单的查询:
select * from demo;
表示查询该表的所有数组。
然后更进一步,可以限制查询条件:
select * from demo where <条件>;
注意一下这里的条件里的等值判断用的是一个等号,而不像开发语言里用的是双等号。
这时候发现我们用不了那么多的字段,然后筛选出要显示的字段:
select <字段01>,<字段02>,<字段03> from [表名] where <条件>
这里简单介绍一下查询,当然还有很多没有一一介绍,在后续的章节会把这部分补齐的。
2.4 添加数据
在查询之前,我们得先保证数据表里有数据,所以我们看看如何插入数据吧。
插入单条记录:
insert into [表名](<字段1>,<字段2>,<字段3>) values(''值1'',''值2'',''值3'')
在表名后面跟括号,括号内写入要插入值的字段,然后values关键字后面用括号包裹起来的一组值便是要插入的值。插入值要与字段名一一对应。
如果要插入多条记录呢?
insert into [表名](<字段1>,<字段2>,<字段3>) values(''值1'',''值2'',''值3''),(''值1'',''值2'',''值3'')
如果需要插入多条的话,将数据用括号包裹起来,然后依次跟在values后面。
2.5 修改数据
当我们发现插入的数据有问题的时候或者因为业务的进行,数据库表里的数据需要更新,这时候我们可以参照以下方式写自己的sql:
update [表名]
set <字段1> = <值1>
如果需要更新多个字段,可以在更新字段后面添加一个逗号,然后跟在后面,简单实例:
update AdditionalService
set storeid = 1 , name = ''23''
目前所以的更新都是全表更新,当然我们一样可以使用 where来限制。
2.6 删除数据
删除数据的关键字是delete,所以删除的写法是:
delete [表名]
where <条件>
如果不设置where 条件,则删除的是全表数据。
2.7 删除表
删除表的操作:
drop table [表名]
这个操作会把表结构和表里的数据都删除。
3.总结
这一篇大概介绍了SQL的基本用法,开发过程中的SQL基本够用了。后续会随着文章内容逐步填补未介绍的部分。
更多内容烦请关注我的博客《高先生小屋》
MySQL -- 基础操作
数据库操作:
-
创建数据库:
-
CREATE DATABASE 数据库名称;
-
-
查看数据库:
-
# 查看所有数据库 SHOW DATABASES;
-
-
创建数据库:
-
# 选择一个数据库/切换至xxx数据库 USE 数据库名称;
-
-
创建数据库:
-
# 删除数据库 DROP DATABASE 数据库名称;
-
表操作:
-
创建表:
-
# 多个参数使用逗号隔开 CREATE TABLE 表名( 参数名 参数类型 ...); # 其他常见操作 PRIMARY KEY #主键约束,可以简单理解为包含了唯一约束和非空约束 NOT NULL #非空约束 UNIQUE #唯一约束 DEFAULT #设置默认值 AUTO_INCREMENT #主键自增
-
-
查看表:
-
# 切换表 USE 表名; SHOW TABLE 表名;
-
-
删除表:
-
DORP TABLE 表名;
-
-
修改表:
-
# 修改字段数据类型 ALTER TABLE t_id MODIFY INT BIGINT; # 修改字段名 ALTER TABLE 表名 CHANGE t_id t_ids;
-
-
设置外键:
-
ALTER TABLE 表名 ADD FOREIGN KEY [外键名字] (外键字段) REFERENCES 父表 (主键字段);
-
数据操作:
-
插入数据:
-
INSERT INTO 表名(字段1,字段2...) VALUES(value1,value2...);
-
-
修改数据:
-
UPDATE 表名 SET 字段名 = value WHERE 条件
-
-
删除数据:
-
DELETE TABLE 表名 WHERE 条件
-
-
查询数据:
-
# 查询所有 SELECT * FROM 表名; # 查询指定 SELECT * FROM 表名 WHERE 条件; # 查询指定,避免score重复(去重) SELECT DISTINCT score FROM 表名 WHERE 条件; # 模糊查询 SELECT * FROM 表名 WHERE 字段 LIKE ''%value%''; # 连接查询 # 内连接 SELECT * FROM 表1 INNER JOIN 表2 ON 条件; # 外连接 # 左外连接 SELECT * FROM 表1 LEFT OUTER JOIN 表2 ON 条件; # 右外连接 SELECT * FROM 表1 RIGHT OUTER JOIN 表2 ON 条件; # 分组查询 SELECT MIN(字段) FROM 表名 WHERE 条件 GROUP By 分组字段; SELECT MIN(字段) FROM 表名 WHERE 条件 GROUP By 分组字段 HAVING 条件#分组后的条件查询 # 分组函数 SELECT COUNT(字段) FROM 表名;#计数 默认忽略NULL SELECT SUM(字段) FROM 表名;#求和 默认忽略NULL SELECT AVG(字段) FROM 表名;#求平均值 默认忽略NULL SELECT MAX(字段) FROM 表名;#求最大值 SELECT MIN(字段) FROM 表名;#求最小值 # 排序 可以有多个排序字段 # ASC 正序/DESC 倒叙 SELECT * FROM 表名 ORDER BY 排序字段1,排序字段2 ASC,DESC; # 限制查询结果返回的数量 # i:为查询结果的索引值(默认从0开始),当i=0时可省略i # n:为查询结果返回的数量 select * from 表名 limit i,n; # 总结: #语句书写顺序 SELECT DISTINCT .. ROM .. WHERE .. GROUP BY .. HAVING .. ORDER BY .. LIMIT .. #执行顺序 FROM .. WHERE .. GROUP BY .. HAVING .. SELECT DISTINCT .. ORDER BY .. LIMIT ..
-
mysql 基础操作
注意:创建表的时候,最后一个字段不要加 ,
一、数据库
1.展示所有数据库
show databases;
2.创建数据库
create database 数据库名称 default charset utf8;
3.使用数据库
use 数据库名称;
4.删除数据库
drop database 数据库名称;
注意:创建数据库的时候,设置默认编码
二、表
1.查看所有表
show tables;
2.创建表(最简单)
create table db1(
id int auto_increment primary key,
name char(20) not null,
age int
)engine=innodb default charset=utf8;
3.清空表
# 清空表db1,但自增值不会还原
delete from db1;
# 清空表db1,自增值还原
truncate table db1;
4.删除表
drop table db1;
注意:auto_incrment 自增
primary key 主键 约束(唯一且不为空)
注意:一个表里只能有一个主键,但主键可以有多列
三、行
1.增
insert into db1(name,age) values(''tom'', 18);
2.删
delete from db1 where 条件语句;
3.改
update db1 set name=''joker'' where id >5;
4.查
select * from db1;
select name from db1;
mysql 数据库优化课程 ---13、mysql 基础操作(mysql 如何复制表)
mysql 数据库优化课程 ---13、mysql 基础操作(mysql 如何复制表)
一、总结
一句话总结:
1. 复制表结构 :create table student like user;
2. 复制表内容:insert into student select * from user;
2、mysql 中如何查看索引?
show index:show index from user\G
3、mysql 普通索引如何创建和删除?
create index:创建:create index i_age on user (age);
drop index:删除:drop index i_age on user;
1) 创建
create index i_age on user(age);
2) 删除
drop index i_age on user;
4、mysql 唯一索引如何创建和删除?
create unique index:创建:create unique index u_username on user (username);
drop index:删除:drop index u_username on user;
1) 创建
create unique index u_username on user(username);
2) 删除
drop index u_username on user;
5、视图和表的关系?
视图是虚拟表,隶属于表:所以操作视图和操作表的语句是一样的
视图就是虚拟的,相当于等于一条命令
6、mysql 中视图如何创建?
create view:create view userclass as select user.username,user.age,class.name from user,class where user.class_id=class.id;
7、视图的特点是什么?
数据变化:当表中数据发生变化时视图数据也会随着发生变化.
视图是虚拟表,隶属于表
所以操作视图和操作表的语句是一样的
视图就是虚拟的,相当于等于一条命令
8、mysql 中查看表中未来的自增数?
show create table:show create table user;
二、内容在总结中
MySQL 数据库优化:
1.Mysql 基础操作
2. 常用的 Sql 技巧
3.Sql 语句优化
4.Mysql 服务器优化
mysql 表复制:
1. 复制表结构
create table student like user;
2. 复制表内容
insert into student select * from user;
mysql 索引:
1. 查看索引
show index from user\G
2. 普通索引
1) 创建
create index i_age on user(age);
2) 删除
drop index i_age on user;
3. 唯一索引
1) 创建
create unique index u_username on user(username);
2) 删除
drop index u_username on user;
mysql 视图:
1. 创建
create view userclass as select user.username,user.age,class.name from user,class where user.class_id=class.id;
2. 删除
drop view userclass;
3. 查看
show tables;
4. 查看视频数据
select * from userclass;
5. 视图的特性
当表中数据发生变化时视图数据也会随着发生变化.
mysql 中查看表中未来的自增数:
show create table user;
mysql 字符串函数:
1. 字符串连接
concat();
例子: select concat (''php'',''linux'');
2. 转小写
lcase();
例子: select lcase (''PHP IS VERY MUCH!'');
3. 转大写:
ucase();
例子: select id,ucase (username),age from user;
4. 长度
length();
例子: select length (''linux'');
5. 取除左边的空格
ltrim();
例子: select length (ltrim ('' linux''));
6. 取除右边的空格
rtrim();
例子: select length (rtrim (''linux ''));
7. 重复
repeat();
例子: select concat (repeat (''-'',20),''linux'');
8. 替换
replace();
例子: select replace (''linux and java'',''linux'',''php'');
9. 截取
substring();
例子: select substring (''/usr/local/src'',6,5);
10. 空格
space();
例子: select concat (''linux'',space (20),''php'');
mysql 数学函数:
1.bin();
十进制转 2 进制
例子: select bin (10);
2.ceiling();
取上一个整数
例子: select ceiling (10.5);
3.floor();
取下一个整数
例子: select floor (10.5);
4.max();
取最大数
例子: select max (id) from user;
5.min();
取最小数
例子: select min (id) from user;
6.sqrt();
开平方
例子: select sqrt (100);
7.rand();
求随机数
例子: select * from user order by rand ();
mysql 日期函数:
1.curdate();
当前日期
例子: select curdate ();
2.curtime();
当前时间
例子: select curtime ();
3.now();
当前日期和时间
例子: select now ();
4.unix_timestamp();
当前时间戳
例子: select unix_timestamp ();
5.from_unixtime();
时间戳转日期
例子: select from_unixtime (1492176896);
6.week(date);
一年中的第几周
例子: select week (''2017-1-8'');
7.year(date);
日期中的年部分
例子: select year (''2017-4-14'');
8.datediff();
日期差值
例子: select datediff (''2017-4-14'',''2017-4-10'');
重排 auto_increment 方法:
1.delete
1)delete from user;
2)alter table user auto_increment=1;
2.truncate
truncate user;
mysql 中命令的帮助:
1. 简单
? create
2. 更多
? fun%
巧用 RAND () 提取随机行:
select * from user order by rand limit 3;
正则表达式的使用:
1. 以 php 结尾的数据
select * from user where username regexp ''php$'';
2. 以 php 结尾或以 linux 结尾的数据
select * from user where username regexp ''php$'' or username regexp ''linux$'';
3. 查找包含 php 或 linux 或 user 的数据
select * from user where username regexp ''php|linux|user'';
8、mysql 中查看表中未来的自增数?
show create table
show create table user;
今天关于MySQL基础操作和mysql基础操作命令的介绍到此结束,谢谢您的阅读,有关C# 数据操作系列 - 1. SQL基础操作、MySQL -- 基础操作、mysql 基础操作、mysql 数据库优化课程 ---13、mysql 基础操作(mysql 如何复制表)等更多相关知识的信息可以在本站进行查询。
本文标签: