mysql总

作者: WANGLIN_HZ | 来源:发表于2018-08-12 19:58 被阅读0次

创建数据库

CREATE DATABASE db_admin;

查看当前所在数据库

select database();

修改数据库

ALTER {DATABASE} [数据库名] [DEFAULT] CHARACTER [=] 字符集 |[DEFAULT] COLLATER[=] 较对规则名称

删除数据库

DROP DATABASE IF EXISTS 数据库名称;

查询存储引航

SHOW ENGINES;


MySQL表

创建表

CREATE TABLE customers (userid int NOT NULL AUTO_INCREMENT,name char(50) NOT NULL,address char(200) NOT NULL,email char(50) NOT NULL, PRIMARY KEY(userid) );

查看表

SHOW TABLES

查看表详细信息

SHOW CREATE TABLE table_name

查看表结构

DESC 数据表名;

添加新字段(列)

ALTER ATABLE students ADD age int DEFAULT 0
ALTER ATBLE students ADD (gender int default 0,phonenum int(11) );

修改字段名(列)

ALTER TABLE 表名 CHANGE 字段名  新字段名 数据类型;

删除字段名(列)

ALTER TABLE students DROP phone;

修改表名

ALTER TABLE oldtable RENAME AS newtable;

重命名表

RENAME TABLE 数据库表名1 To 数据库表名2

删除表

DROP TABLE [IF EXISTS] 数据库表名;

复制表

CREATE TABLE [IF NOT EXISTS] 数据表名  LIKE 源数据表名


增(insert into)

  • 插入完整的行;
  • 插入行的一部分;
  • 插入多行;
  • 插入某些查询的结果

插入完整行

INSERT INTO customers values(10010,'小明','北京','1234567@qq.com')

查询已插入的数据

SELECT * FROM customers;

根据列插入数据

INSERT INTO customers(userid,name,adress,email)values('10011','小明','北京','1234567@qq.com')

删除数据

DELECT FROM customers WHERE userid = 10010;

UPDATE customers SET email='123@sina.com' where userid=10011;


检索单个列

SELECT 列名 FROM 表名;

检索多个列

SELECT 列名,列名,列名,列明....FROM 表名;

检索所以列

SELECT * FROM 表名;

检索不同的行

SELECT DISTINCT 列名 FROM 表名;

使用完全限定的表名

SELECT 表名.列 FROM 表名;

=等于

select name from customers where name='小明';

<>不等于

select name from customers where name<>'小明';

!=不等于

select name from customers where name!='小明';
<小于
select name from customers where name<'小明';

<=小于等于

select * from customers where userid<=10014;

>大于

select * from customers where userid>10014;

>=大于等于

select * from customers where userid>=10014;


match方法

导入re模块

import re
result = re.match(正则表达式,要匹配的字符串)
result.group()


. 匹配任意1个字符(除了\n)
[ ] 匹配[ ]中列举的字符
\d 匹配数字,既0-9
\D 匹配非数字,既不是数字
\s 匹配空白,既 空格,tab键
\S 匹配非空白
\w 匹配单词字符,既a-z,A-z,0-9,_
\W 匹配非单词字符

[ ]的使用

ret=re.match("[hH]","hello python") print(ret.group())

使用\d进行匹配

ret = re.match("嫦娥\d号","嫦娥1号发射成功")

使用\D进行匹配

ret = re.match("\D娥","嫦娥1号发射成功") print(ret.group())

使用\s与\S进行空格和非空格匹配

ret = re.match("\D娥\d\s\D","嫦娥1 号发射成功")
print(ret.group())
ret= re.match("\S娥\d\s\D","嫦娥1 号发射成功")
print(ret.group())


*    匹配前一个字符出现0次或者无限次,既可有可无
+    匹配前一个字符出现1次或者无限次,既至少有1次
?    匹配前一个字符出现1次或者0次,既要么有一次,要么没有
{m}   匹配前一个字符出现m次
{m,n}  匹配前一个字符出现从m到n次


^  匹配字符串开头
$  匹配字符串结尾

|  匹配左右任意一个表达式
(ab)  将括号中字符作为一个分组
\num  引用分组num匹配到的字符串
(?p<name>)  分组起别名
(?p=name)  引用别名为name分组匹配到的字符串

单列排序(并指定方向)

使用ORDER BY可以对查询的结果进行排序(ASC) 和降序(DESC)排列,在默认情况下,ORDER BY按升序输出结果。如果要按降序排列可以使用DESC来实现。语法格式如下:
升序排列

SELECT age,name FROM customers ORDER BY age ASC;

降序排列

SELECT age,name FROM customers ORDER BY age DESC;

多列排序(并指定方向)

为了按多个列排序,只要指定列名,列名之间用逗号分开即可(就像选择多个列时所做的那样)。下面的代码检测3个列,并按其中两个列对结果进行排序---首先按年龄,然后载2按名称排序。

SELECT name,adress,age From customers ORDER BY age DESC,name ASC;

查询出性别为1的学生并根据年龄进行排序升序

SELECT * FROM studentinfo WHERE gender = 1 ORDER BY age;

查询出性别为0的学生并根据年龄进行排序降序

SELECT * FROM studentinfo WHERE gender=0 ORDER BY age DESC;


限制查询

指定返回的行数
SELECT语句返回所以匹配的行,他们可能是指定表中的每个行。为了返回第一行或前几行,可使用LIMIT字句。下面举一个例子:

SELECT name FROM customers LIMIT 5;

指定从第几行起,返回多少行

SELECT * FROM 表名 LIMIT start,count

使用ORDER BY 和LIMIT的组合

使用ORDER BY和LIMIT的组合能够找出一个列中最高或最低的值,下面的例子演示如何找出最大的年龄的值

取最大值

SELECT name,age FROM customers ORDER BY age DESC LIMIT 1;

取最小值

SELECT name,age FROM customers OEDER BY age LIMIT1; =>SELECT name,age FROM customers ORDER BY age


聚合函数

  • AVG()返回某列的平均值
  • COUNT() 返回某列的行数
  • MAX() 返回某列的最大值
  • MIN() 返回某列的最小值
  • SUM() 返回某列值之和

MAX()函数
SELECT MAX(age) FROM customers;
MIN()函数
SELECT MIN(age)FROM customers;
SUM()函数
SELECT SUM(age) as sum_age from customers;

相关文章

网友评论

      本文标题:mysql总

      本文链接:https://www.haomeiwen.com/subject/skxlbftx.html