数据库简单学习

新学,命令全都敲了一遍,感兴趣就一条条跟着敲吧(咳咳)

数据库连接:mysql -u root -p

创建数据库:create databases 数据库名;

显示数据库:show databases;

删除数据库:drop database 数据库名;

选择数据库:use 数据库名;

mysql支持数据类型:严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC);近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION);

(主要是INT型)

(主要是VARCHAR型)

创建数据表:create table table_name (column_name column_type);

删除数据表:drop table table_name;

插入数据:insert into table_name ( field1, field2,...fieldN )  values( value1, value2,...valueN )

查询数据:select column_name,column_name from table_name  [where Clause]  [limitN] [ offset M];

where设置条件:select field1, field2,...fieldN from table_name1, table_name2... [where condition1 [AND [OR]] condition2.....];

修改或者更新数据:update table_name set field1=new-value1, field2=new-value2 [where Clause];(更新某一条记录的某个字段的值)

添加或删除数据表字段:alter table jzytab1 drop i;alter table jzytab1 add i INT;

删除行记录:delete from table_name [where Clause];

获取某一字段中含有某些字符的所有记录:select field1, field2,...fieldN  from table_name where field1 like condition1 [AND [OR]] filed2 = 'somevalue';(%代表任意字符)

连接两个select语句,去重得到不重复字段值:

select expression1, expression2, ... expression_n from tables [where conditions

union [ALL | DISTINCT

select expression1, expression2, ... expression_n from tables[whereconditions];

例如:select country from Websites
union
select country from apps
order by country;

排序数据:select field1, field2,...fieldN from table_name1, table_name2... order by field1, [field2...] [asc [desc]];

对一个或者多个列的结果集进行分组,然后再分组的基础上使用count计数,或使用sum求和,或使用ave求平均值:select column_name function(column_name) from table_name where column_name operator value group by column_name;

实现在分组统计数据基础上再进行相同的统计:select name, sum(singin) as singin_count from jzytab2 group by name with rollup;

连接(内连接,左连接,右连接):直接上例子

select a.id,a.zuozheb.count from jzytab1 a inner join jzytab2 b on  a.zuozhe= b.zuozhe;

左连接:

 select a.id,a.zuozhe, b.count from jzytab1 a left join jzytab2 b on a.zuozhe= b.zuozhe;

右连接:

select a.id,a.zuozhe, b.count from jzytab1 a right join jzttab2 b on a.zuozhe= b.zuozhe;

值为NULL时,判断条件不能是=NULL或者!=NULL,只能用IS NULL或者IS NOT NULL:select  * from jzytab1 where city IS NULL;

正则表达式简单介绍:^st:以st开头的单词。ok$:以ok结尾的单词。o{2}:连续出现两个o的单词。

举例子喽:

SELECT name FROM jzytab1 WHERE name REGEXP '^st';

SELECT name FROM jzytab1 WHERE name REGEXP 'ok$';

SELECT name FROM jzytab1 WHERE name REGEXP 'mar';

SELECT name FROM jzytab1 WHERE name REGEXP '^[aeiou] | ok$';(以元音字符开头或以'ok'字符串结尾的所有数据)

数据库事务理解:主要用于处理操作量大,复杂度高的数据。例如,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务(四特性:一致同意持久隔离原子)!

在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。(出现问题了:设置自动提交之后,又禁用了自动提交。当开始一个事务时,插入一条记录后回滚不回去了。。。。。。)

修改字段类型及名称:alter table 表名 modify city CHAR(10);以前是VARCHAR(30)或者:

alter table 表名 change 旧字段名 新字段名 新字段类型;

修改字段的默认值:(失败了||=_=||    为啥呢):alter table jzytab1 alter i set default 1000;

alter table jzytab1

-> modify j bigint NOT NULL DEFAULT 100;

修改数据表的类型(修改存储引擎):alter table jzytab1  ENGINE = MYISAM;

MySQL常用的四种引擎:MyISAM存储引擎(不支持事务、也不支持外键,优势是访问速度快)、InnoDB存储引擎(提供了具有提交、回滚和崩溃恢复能力的事务安全)、MEMORY存储引擎(memory类型的表访问非常的快,因为它的数据是放在内存中的,并且默认使用HASH索引)、MERGE存储引擎(一组MyISAM表的组合,这些MyISAM表必须结构完全相同)。

修改表名:alter table jzytab1 rename to jzytab2;

索引:单列索引和组合索引。(一个表可以有多个单列索引)组合索引:一个索引包含多个列。

创建索引:create index 索引名 on 表名(列名(length));

添加索引:alter table 表名 add index 索引名(列名);

显示索引信息:show index from 表名;G

原文地址:https://www.cnblogs.com/westlife-11358/p/9296932.html