mysql ddl脚本_MySQL学习之路(1):SQL脚本语言
使用MySQL数据库,首先安装MySQL数据库,本文所有SQL脚本在MySQL上测试和执行。
安装Mysql服务器;
安装Mysql workbench客户端,可以以图形化界面管理mysql;
安装phpMyadmin客户端,可以通过bs方式图形化管理Mysql;
1. Mysql服务器操作:
windows下为例,win+r 进入cmd界面
启动服务器:net start mysql
停止服务器:net stop mysql
连接服务器:mysql-h localhost -u root -p password
2. Database基本操作
create database db_bookstore; //创建数据库:use database db_bookstore; //使用数据库:drop database db_bookstore; //删除数据库:
3. DDL 表操作
(1)创建表
creat table table_name(id int not null auto_increment primary key,
namechar(50)
)if not exists;
(2)查看表结构
show columns from tb_name from db_name;desc table_name;
(3)删除表:
drop table tb_name if exists;
(4)修改表: alter tb_name alter/modify/change [column] ...
ALTER COLUMN:设置或删除列的默认值(操作速度非常快)
例子:
alter table film alter column rental_duration set default 5;alter table film alter column rental_duration drop default;
CHANGE COLUMN:列的重命名、列类型的变更以及列位置的移动
例子:
ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32) NOT NULLFIRST;ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32) NOT NULL AFTER baz;
MODIFY COLUMN:除了不能给列重命名之外,他干的活和CHANGE COLUMN是一样的
例子:
ALTER TABLE MyTable MODIFY COLUMN foo VARCHAR(32) NOT NULL AFTER baz;
(5)重命名表
ALTER tb_name RENAME [AS]new_tb_name;
RENAMETABLE tb_name TO new_tb_name;
注意:[]内的是可以选择的,包括change,modify,alter后满的COLUMN
4. DML语言:数据操纵语言
(1)插入
INSERT INTO tb_name(field1,...) VALUES(value1,...);
(2)修改
UPDATE tb_name SET f1=v1,f2=v2...;
(3)删除
DELETE FROM tb_name WHERE condition
5.DQL:数据查询,SELECT专题
SELECT f1,f2,... FROMtb_nameWHEREprimary_constraintGROUP BYgrouping_columnsORDER BY column_name DESC/ASC
HAVINGsecdonary_constraint
LIMITcount;
关键语法:
SELECT *
SELECT DISTINCT *
SELECT TOP count *
(1)单表查询
SELECT * FROM tb_name; //所有字段SELECT id,name FROM tb_name; //指定字段SELECT * FROM tb_name WHERE id<5 // 查询符合条件的字段
(2)IN, NOT IN, BETWEEN AND (这是指明字段的范围,后面还有一个IN用于子查询)
SELECT * FROM tb_name WHERE id IN(1,2,3);SELECT * FROM tb_name WHERE id NOT IN(1,2,3);SELECT * FROM tb_name WHERE id BETWEEN 1 AND 5;
(3)使用LIKE + 通配符
%:匹配一个或者多个字符
_: 匹配任意单个字符
SELECT * FROM tb_name WHERE user LIKE 'm%r_';// 以m开头,中间若干个字符,r后面一个字符结尾
(4)空值查询IS NULL,IS NOT NULL
SELECT * FROM tb_name WHERE row IS NULL;SELECT * FROM tb_name WHERE row IS NOT NULL;
(5)多条件查询AND, OR
SELECT * FROM tb_name WHERE id=1 AND name='Jack';SELECT * FROM tb_name WHERE id=1 OR name='Jack';
(6)去掉重复行
SELECT DISTINCT * FROM tb_name;
(7)使用ORDER BY [ASC/DESC]
SELECT * FROM tb_name ORDER BY id DESC
SELECT * FROM tb_name ORDER BY id ASC
(8)GROUP BY 子句
注意:没有出现在GROUP BY子句中的字段,不能出现在SELECT 子句中,聚合函数除外
如果SELECT 子句出现GROUP BY中没有出现的字段,则结果只显示每一组的一条记录;
一般形式为:
SELECT field,func_name(field) FROM tb_name GROUP BY field;
(9)多字段分组: 2个字段的笛卡尔积
SELECT field1,field2 FROM tb_name GROUP BY field1,field2;
(10)LIMIT限制结果集
SELECT * FROM db_name WHERE id<5 LIMIT 3; //显示结果的3行SELECT * FROM db_name WHERE id<5 LIMIT 5,10; // 从第5行开始,的10行
(11)聚合函数:MIN(),AGV,MAX,COUNT
聚合函数的特点是根据一组数据计算出一个值,聚合函数只能对非NULL值进行计算,NULL值被忽略;
(12)连接查询:
理解:就是有至少2张表,查询结果是两张表满足某种条件的拼接;
不带查询条件,则是2张表的笛卡尔积;
①内连接查询,最常见的是等值连接
SELECT * FROM tb_left,tb_right WHERE tb_left.id=tb_right.id;SELECT * FROM tb_left INNER JOIN tb_right WHERE tb_left.id=tb_right.id;
②外连接查询:
左外连接: 内连接结果,还包含不符合条件的左表数据,右表相应列加NULL
SELECT * FROM tb_left LEFT [OUTER] JOIN tb_right WHERE tb_left.id=tb_right.id;
右外连接:
SELECT * FROM tb_left RIGHT [OUTER] JOIN tb_right WHERE tb_left.id=tb_right.id;
全外连接:
SELECT * FROM tb_left FULL OUTER JOIN tb_right WHERE tb_left.id=tb_right.id;
(13)子查询:
①IN
SELECT * FROM tb_name WHERE id IN(SELECT id FROM tb_2);
②ANY
SELECT * FROM tb_name WHERE id
③ALL
SELECT * FROM tb_name WHERE id
④EXISTS 子查询返回一个bool值
SELECT * FROM tb_1 WHERE row>=90 AND EXISTS(SELECT * FROM tb_2 WHERE score='优秀');// 如果有score为优秀的记录,则查询 row>=90的记录
⑤关系运算,子查询返回唯一值
SELECT * FROM tb_name WHERE id >(SELECT id FROM tb_2 WHERE id=1);
注:子查询一般都是一个单列列表,SELECT list FROM tb_name; list为单列列表
使用EXISTS时候除外;
使用关系运算符是子查询返回唯一值;
(14)合并查询结果
UNION: 合并查询结果,除去相同的行
UNION ALL : 合并查询结果,简单的把两个集合的元素混合
SELECT id,name UNION SELECT id,author; //正确SELECT id,name UNION SELECT id; // 错误,字段数目不同,无法UNION
注意:前提条件是,左边和右边的字段列表的字段数必须相同
6. Mysql函数
6.1 数学函数
(1)ABS(X) 取绝对值
SELECT ABS(-1); // 结果为1
(2)取整函数
CEIL(); //向上取整FLOOR(); // 向下取整
(3)随机数生成器
RAND(); // 0-1随机数RAND(X); // 产生0-1随机数,x相同时,随机数相同
(4)符号检测器
SIGN(X); // 返回-1,0,1作为参数的符号
(5)圆周率
SIGN(X); // 返回-1,0,1作为参数的符号
(6)小数位截断函数
TRUNCATE(X,Y) // 保留x后y位小数
(7)圆整(向最近的整数靠近)
ROUND(X) //返回离X最近的整数ROUND(X,Y) //返回x,后面保留y位小数,截断时四舍五入// 例如ROUND(3.1415,3)=3.142
(8)平方、开方
POW(X,Y) //x的y次方SQRT(X); //对x开平方
MOD(X,Y)// 求余数
(9)指数对数
EXP(X); //e的x次方LOG(X);LOG10(X);
(10)弧度角度转换
DEGREES(radians) // 弧度---角度
RADIANS(degree) // 度数---弧度
(11)三角函数
SIN(X); //x是弧度ASIN(X);COS(X);ACOS(X);TAN(X);ATAN(X);COT(X);
6.2 字符串函数
(1)长度
CHAR_LENGTH(str);
(2)转换大小写
UPPER(str);UCASE(str);LOWER(str);LCASE(str);
(3)修剪函数(针对前导、结尾空格)
LTRIM(s);RTRIM(s);TRIM(s);//删除引导空格;结尾空格;引导和结尾空格
TRIM(s1from s_src); //删除s2开始和结尾处的s1
(4)替换、子串、反转
REPLACE(s,s1,s2); //用s2替换s中的s1SUBSTRING(s,n,len); //s处n开始长度为len的字符串LEFT(s,n),RIGHT(s,n) //返回左边或者右边长度为n的字符串REVERSE(s); //字符串倒序
更多请参考:PHP 学习路线图《MySQL快速入门》
6.3 日期和时间函数---------DATE
|----------TIME
(1)日期、时间
CURRENT_DATE(); // 2014-08-07
CURRENT_TIME(); // 10:30:30
(2)日期和时间(时间戳)
NOW(); // 2014-08-07 10:30:30
CURRENT_TIMESTAMP();// 2014-08-07 10:30:30LOCALTIME();// 2014-08-07 10:30:30LOCALTIMESTAMP();// 2014-08-07 10:30:30SYSDATE();// 2014-08-07 10:30:30
(3)以秒形式的时间戳
UNIX_TIMESTAMP(); //当前UNIX时间戳
UNIX_TIMESTAMP(d);
FROM_UNIXTIME(d);
(4)年月日、时分秒
YEAR(d);MONTH(d);DAY(d);
HOUR(t);
MINUTE(t);
SECOND(t);
(5)工具函数
DATEDIFF(d1,d2) // d1-d2 的天数,d1是最近的日期,d2是早些的日期
ADDDATE(d,n);
SUBDATE(d,n);
更多请参考:PHP 学习路线图《MySQL快速入门》
6.4 条件判断函数
6.5 系统信息函数
(1)版本号、连接数
VERSION(); //获取版本
CONNECTION_ID();// 获取连接数
(2)当前数据库名
DATABASE();SCHEMA(); // 当前数据库
(3)当前用户
USER();SYSTEM_USER();SESSON_USER(); //当前用户CURRENT_USER();
(4)字符集
CHARSET();
(5)最后插入的ID
LAST_INSERT_ID();
6.6 加密函数
MD5(str); //普通数据加密
PASSWORD(s);//不可逆加密,对用户名加密
ENCODE(str_dst,pass_str);//用pass_str加密str_dst,返回二进制数,用blob类型存储
DECODE(crypt_str,psss_str);// 用pass_str解密crpyt_str,加密和解密用的pass_str相同
mysql ddl脚本_MySQL学习之路(1):SQL脚本语言相关推荐
- MySql DDL日志_mysql学习日记——数据库基础与基本DDL、DML语句
# # # 数据库的基本概念 数据库: DataBase (DB).用于存储和管理数据的仓库. 数据库的特点: 1. 持久化存储数据的.其实数据库就是一个文件系统 2. 方便存储和管理数据 3. 使用 ...
- Polyworks脚本开发学习笔记(十七)-制作宏脚本自定义工具条
Polyworks脚本开发学习笔记(十七)-制作宏脚本自定义工具条 做好的宏脚本程序,每次打开脚本加载程序太多麻烦,为了方便的调用脚本做各种操作,可以使用系统的自定义工具条功能将脚本加载到工具条上. ...
- 从mysql学起_MySQL学习从这里出发!
MySQL数据库开发学习中,想满足一些需求,无疑需要经常与数据打交道,例如,我们在使用IO的一些技术的时候,常常需要将一些数据存储到外部文件,可能大家会问,我们初学的时候常常会简单的保存一些数据到 . ...
- 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·002【SQL介绍、数据库的CRUD操作(DDL语句)】
文章目录 一.SQL 1.介绍 2.格式 3.分类 (1).DDL(数据定义语句) (2).DML(数据操作语句) (3).DQL(数据查询语句) (4).DCL(数据控制语句) (5).TPL(事务 ...
- mysql脚本执行中文乱码_MySQL从命令行导入SQL脚本时出现中文乱码的解决方法
本文实例讲述了MySQL从命令行导入SQL脚本时出现中文乱码的解决方法.分享给大家供大家参考,具体如下: 在图形界面管理工具 MySql Query Browser中打开脚本(脚本包括建库.建表.添加 ...
- mysql数据库套件_MySQL数据库管理开发套件(EMS SQL Management Studio For MySQL)下载 v1.3.0.46170 官方版 - 比克尔下载...
EMS SQL Management Studio For MySQL是一个强大的MySQL数据库管理和开发套件,由很多工具组成,涉及MySQL数据库管理.导入.导出.迁移.测试.备份.比较.同步等数 ...
- Linux之0基础入门,部署JavaWeb项目到阿里云服务器上,阿里云服务器安装MySQL并使用WorkBench连接,WorkBench导入SQL脚本,Linux之SSH和SFTP连接工具,
1.创建阿里云服务器 创建方法有两种,一种是购买云服务器,直接在阿里云控制台里可以找到.如图: 另一种是使用 阿里云 云起实验室的课程:搭建JavaWeb开发环境 提供的一次可以开两个小时的免费的服务 ...
- php脚本来创建一个表,PHP - SQL脚本创建器
我需要的: 一个高效的SQL脚本生成器来替换下面的. 的背景. 一个非常简单的程序,但我需要一个更有效的方式来生成它,我有这个代码的原因是我需要其他开发人员能够在我的平台和数据库表上创建"模 ...
- mysql教程清华课后答案_mysql学习之路_sql
查看数据库: Show databases; 查看指定部分数据库:模糊查询 Show databases like 'patten';--paatten是匹配模式 %:表示是匹配模式 _:表示匹配单个 ...
最新文章
- 十大流氓骚扰软件卸载秘籍
- ubuntu openstack spice
- python全网表情包_Python爬虫爬取最右公众号表情包资源
- 利用python自动发邮件
- 管理感悟:开会为什么坐到后面
- android 日历 定制,Android自定义View(CustomCalendar-定制日历控件)
- matlab深度DoF图像修复,恢复玩dnf在win10中出错client.exe损坏的图像的技巧
- h264, h265 和 libvpx 比较(h264/avc, hevc 和vp9比较)
- python绘制正多边形_python : turtle 画正多边形
- 优化 WindowsXPSP2 系统服务项设置
- opencv图片保存0字节_openCV将8bit(1像素对应8bit)图像保存为1bit(1像素对应1bit)...
- python识别视频中火焰_基于yolov3和python框架的火焰识别检测算法
- 数据可视化笔记 Task3 - Matplotlib布局
- ubuntu系统添加新的字体——JetBrains Mono 字体添加实例
- 加密流量也能识别与管控,绿网借至强AI加速能力打造高效智能DPI方案
- lamp分离部署+phpmyadmian
- Scratch(图形化编程工具)绘制3D六面体,3D作品的制作过程!
- “问渠哪得清如许?为有源头活水来” – 提高技术源头数据的质量成为技术信息化热点
- 【附源码】计算机毕业设计SSM母婴商品店进出货管理系统
- c语言if判断语句中有函数,if条件判断语句,谁能帮我分析一下?
热门文章
- memcached服务器搭建(RedHat5)
- 人质困境:多个人的囚徒困境(博弈论的诡计)
- matlab2ask和2psk仿真实验代码
- 快速mysql导入sql文件_mysql肿么快速从sql文件导入数据库
- c语言如何使四种运算符同级,二 如何学习C语言的运算符和运算顺序
- python多线程执行其他模块的文件_python并发编程--进程线程--其他模块-从菜鸟到老鸟(三)...
- python代码运行不了怎么办_selenium ide 生成的 Python 代码无法执行是怎么回事?
- 通达oa oracle数据库,通达OA 2016系统连接ORACLE 11g数据库(图文)
- android 辅助服务 简书,Android AccessibilityService使用
- mysql 更改 uf_mysql 常用修改语句