• MySQL学习笔记( 整理中)


    排序:ORDER BY field1, [field2...] [ASC [DESC]]

    分组:GROUP BY field [with rollup] {根据某个字段有哪几种类型分出来,可配合函数作统计不同分组数量,with rollup所有分组计算总数量}

    连接:
    INNER JOIN 内库接 交集 select 列名1,列名2... from 表1 inner join 表2 on 表1.列?=表2.列?
    LEFT JOIN(左连接)左交集select 列名1,列名2... from 表1 left join 表2 on 表1.列?=表2.列?
    RIGHT JOIN(右连接)右交集select 列名1,列名2... from 表1 right join 表2 on 表1.列?=表2.列?

    正则表达式:select.... WHERE 列名 REGEXP 'XXX';

    NULL值处理:is null or is not null

    事务:
    MYSQL的事务处理主要有两种方法。
    1、用begin,rollback,commit来实现
    begin 开始一个事务
    rollback 事务回滚
    commit 事务确认
    2、直接用set来改变mysql的自动提交模式
    MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过
    set autocommit=0 禁止自动提交
    set autocommit=1 开启自动提交
    来实现事务的处理。
    但注意当你用 set autocommit=0 的时候,你以后所有的SQL都将做为事务处理,直到你用commit确认或rollback结束,注意当你结束这个事务的同时也开启了个新的事务!按第一种方法只将当前的作为一个事务!
    个人推荐使用第一种方法!
    MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持的!(切记!)

    也可用UNIDAC的控件实现
    UniQuery.Connection通过StartTransaction, Commit, Rollback等方法来控制本地事务,判断一个事务是否开启用InTransaction。

    ------------------------------------------------------------------------------------------------------------------------------------
    数据库操作:
    create database 数据库名 character set gbk; {设置数据库的字符集}
    drop database 数据库名
    对表的操作

    创建表:create table student( stu_id int unsigned not null,s_name char(10) not null )

    // {default'-', 默认值 int unsigned 无符号int,not null 不为空,auto_increment 自动增加索引值,primary key设置为主键,可在建表时加上或另外设置}

    删除表:drop table 表名;

    删除表中所有数据:delete from student

    给表改名字:alter table 旧表名 rename 新表名;

    添加列:alter table 表名 add 列名 列数据类型 [after 插入位置]or[first];

    给表的列改数据类型: ALTER TABLE 表名 MODIFY 列名 数据类型

    给列数据类型修改默认值:ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值;{不用加等号}

    删除列数据默认值:ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;

    给列改名:ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型

    删除列:alter table 表名 drop 列名称;

    显示表的结构:show create table 表名;

    自增序列添加主键(先添加主键再添加自增序列):

    给列添加主键 Alter table student add primary key(s_id);

    给列添加序列 Alter table 表名 change 列名 列名 int(10) not null auto_increment;

    设置自增序列当前值:alter table 表名 AUTO_INCREMENT=??;

    查询当前自增列的值:SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name='student';

    删除主键(如有自增长序列,先删自增长再删除主键)
    删除自增长 Alter table 表名 change 列名 列名 数据类型
    删除主键 Alter table 表名 drop primary key

    添加索引 create INDEX indexName ON 表名 (列名(length));
    创表时指定: create table 表名(列名 INT NOT NULL,列名 varchar(16)not null ,
    INDEX [indexName](列名(length)));
    修改表的结构时添加:alter 表名 add INDEX[indexName] on (username(length))
    删除索引:DROP INDEX [indexName] on 表名

    创建索引(也可在建表时加索引):
    建表时创建例:CREATE TABLE 表名(ID INT NOT NULL,username VARCHAR(16) NOT NULL,INDEX [indexName] (username(length)) );
    ALTER TABLE
    ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。

    ALTER TABLE table_name ADD INDEX index_name (column_list)

    组合索引:ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);{最左前缀usernname,city,age usernname,city usernname 包含}

    ALTER TABLE table_name ADD UNIQUE (column_list)
    它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。

    ALTER TABLE table_name ADD PRIMARY KEY (column_list)
    它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:

    删除索引:
    DROP INDEX index_name ON talbe_name

    ALTER TABLE table_name DROP INDEX index_name

    ALTER TABLE table_name DROP PRIMARY KEY


    临时表:create temporary table student_temp(....)
    删除临时表DROP TABLE 表名;{与数据库断开连接也会自动销毁临时表}

    复制表:(也可show crete table 表名 获取信息建新表)
    1.只复制表结构到新表
    CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2 或者
    CREATE TABLE 新表 LIKE 旧表

    2.复制表结构及数据到新表
    CREATE TABLE 新表 SELECT * FROM 旧表

    3.复制旧表的数据到新表(假设两个表结构一样)
    INSERT INTO 新表 SELECT * FROM 旧表

    4.复制旧表的数据到新表(假设两个表结构不一样)
    INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表


    对数据的操作

    增:insert course values(null,'游泳 ') 或insert course(x1,x2) values(y1,y2) {可以只插入对应的列的值}
    INSERT IGNORE INTO与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在的数据,如果数据库没有数据,
    就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。
    INSERT IGNORE INTO当插入数据时,在设置了记录的唯一性后,如果插入重复数据,将不返回错误,只以警告形式返回。
    而REPLACE INTO into如果存在primary 或 unique相同的记录,则先删除掉。再插入新记录。

    删:delete from course where id=3

    改:update course set cName='羽毛球' where id=4

    查:select * from 表名

  • 相关阅读:
    leetcode 264: Ugly Number II
    leetcode 260: Single Number III
    leetcode 241: Different Ways to Add Parentheses
    清远市技术学院大学城网
    英德市职业技术学校大学城网
    清远市田家炳中学大学城网
    清远市清城区清城中学大学城网
    清远市第一中学大学城网
    当前最热的技术
    Python 学习视频
  • 原文地址:https://www.cnblogs.com/chaosc/p/5834554.html
Copyright © 2020-2023  润新知