zoukankan      html  css  js  c++  java
  • MySQL之创、增、删、改、查

    MySQL

    Select version();  当前服务器版本

    Select database();  查看当前工作数据库

    Show databases;   显示所有数据库

    Select user(); 或 select current_user();   当前用户

    Select curdate(); 或 select current_date();   当前日期

    Select curtime(); 或 select current_time();   当前时间

    Select now(); 或 select current_timestamp();   显示系统时间当前日期+时间

    Show engines;  显示当前数据库服务器支持的存储引擎

    Show charset;   查看当前服务器所支持的字符集,

    数据类型:

    数字:整数:tinyint,  smallint,  mediumint,  int,  bigint, 

          小数:decimal(p,s)  create table t(t decimal(4,2));

    字符串:定长char(),, 变长varchar()  变长文本text  大文本(0-4G)longtext,  enum() (枚举)

    日期类型date    日期时间类型datetime     二进制

    1)创建数据库 > CREATE DATABASE **  ;

    2)显示所有数据库: >show databases;

    3)删除数据库> DROP DATABASE **;

    4)选择要用的数据库   Show databases;   USE **;

    查看包含的表 SHOW TABLES; 当选择完数据库后,此命令等同于下:Show tables from **;

    另:显示表格show tables from mydb(数据库名);       

    显示表结构: >desc mydb.tablename; 等价于:>show columns from mydb.tablename ;

    CREATE DATABASE IF NOT EXISTS aa DEFAULT CHARACTER SET utf8;  判断aa是否存在,不存在就建立,并设定aa编码为utf8.

    CREATE TABLE <表名> (<列名><数据类型>  [列级完整性约束条件]

      [,<列名><数据类型> [列级完整性约束条件]]…

      [,<表级完整性约束条件>])

    例如:建立学生信息表Create table products( id char(20) not null,

               price float default 0.01,

               constraint primary key (id) );

    注:列级约束条件有两个任选项:

    NOT NULL,表示此列不得置NULL,在其后还可加UNIQUE任选项,表示列值不得重复。

    DEFAULT,当此列的值空缺时,填以缺省值

    主关键字约束指定表的一列或几列的组合的值在表中具有惟一性,即能惟一地指定一行记录。每个表中只能有一列被指定为主关键字,且IMAGE 和TEXT 类型的列不能被指定为主关键字,也不允许指定主关键字列有NULL 属性。

     CREATE TABLE dd(

    id INT(6) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,   自增长

    sname VARCHAR(20),  sgender ENUM('1','0','secret'),   枚举选择项

    PRIMARY KEY(id)

    )ENGINE= MYISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; 从5开始增,默认utf-8

    建表

    CREATE TABLE students(

    sno INT UNSIGNED NOT NULL AUTO_INCREMENT,

    sname VARCHAR(20) NOT NULL,

    sgender ENUM('1','0'),

    sage TINYINT UNSIGNED NOT NULL,

    sbirthday DATETIME,

    saddress VARCHAR(50),

    sscore DECIMAL(4,1),

    PRIMARY KEY(sno)

    )ENGINE=MYISAM AUTO_INCREMENT=200901 DEFAULT CHARSET=utf8;

    insert into students values(null,'李四','1',18,'2000-1-18','郑州',82);

    insert into students values(null,'zz','0',16,'2003-1-18','上海',68.9);

    insert into students values(NULL,'李1','1',17,'2000-1-18','郑州',85),(null,'李3','0',19,'2000-1-18','郑州',78);

    信息不全,插入单独几列信息,

    insert INTO students(sname,sage) values('Jack',18),('Andy',20),('chu',17);

    把查询结果,再插入数据,

    INSERT INTO students(sname,sgender,sage,sbirthday,saddress,sscore) SELECT sname,sgender,sage,sbirthday,saddress,sscore FROM students;

    DELETE FROM students WHERE sno=200918;

    DELETE FROM students ;  -- 无条件删除所有记录。

    TRUNCATE TABLE students;  -- 直接清空数据表,全部删除,auto_increment 从新分配,很少用

    replace into students (sname,sage) VALUES('A',18),('B',20);

    REPLACE INTO students VALUES (200917,'YEAR','0',18,'2001-5-5','GUANGZHOU',77.68);

    UPDATE students SET sscore=79,sname='张111',sbirthday='2001-8-8',saddress='shenzhen' WHERE sno=200902;

    UPDATE students SET sscore=0 WHERE sscore IS NULL; -- 得分为空的,修改为0分,与下面均不一样

    UPDATE students SET sscore=0 WHERE sscore='';

    UPDATE students SET sscore=0 WHERE sscore=NULL;

    查看数据信息

    SELECT * FROM students;

    SELECT sname 姓名,sscore 成绩,saddress 家庭地址 FROM students;

    SELECT * FROM students WHERE sscore!=78;

    SELECT * FROM students WHERE sscore<>78;

    SELECT * FROM students WHERE NOT sscore=78;

    SELECT * FROM students WHERE sscore BETWEEN 80 AND 90;

    SELECT * FROM students WHERE sbirthday BETWEEN '2001-1-1' AND '2010-1-1';

    SELECT * FROM students WHERE saddress='郑州 ';

    SELECT * FROM students WHERE sname LIKE '李_';  /*like中,_代表任意1个字符,号*/

    SELECT * FROM students WHERE sname LIKE '%1%';  /*like中,%代表任意0个或多个任意符号*/

    SELECT * FROM students WHERE sno NOT IN (200917,200925);  /* in 表示在括号内的项,。还有 not in 就是除了 */

    SELECT * FROM students WHERE sscore IS NOT NULL;

    SELECT * FROM students GROUP BY sname ORDER BY sno ASC, sscore ASC,sno DESC

    /*GROUP BY用来将结果按列名的值进行分组,该属性列值相等的元组为一组,,ORDER BY将结果表按列名的值升序ASC或降序DESC排序*/

    SELECT COUNT(sno) AS 人数,MIN(sscore) AS 最低分, MAX(sscore) AS 最高分,AVG(sage) AS pingjunnianling FROM students;

    SELECT 姓名, Year(Date())-Year(出生年月) AS 年龄 FROM Students

    SELECT sname,COUNT(*) AS 人数 FROM students GROUP BY sname; 可得重名的名字和人数

    修改表名,修改dd为student

    RENAME TABLE dd TO student;

    增加列,即字段,即维度删除列

    ALTER TABLE tbl_name [ADD<新列名><数据类型>[完整性约束]]

           [DROP<列名><完整性约束名>]

           [MODIFY<列名><数据类型>];

    ADD用于增加新列和新的完整性约束条件,新增加的列一律为空值。(index, primary key等)

    DROP用于删除指定的完整性约束条件(index,primary key, foreign key)

    MODIFY用于修改原有的列定义

    ALTER TABLE student ADD sscore TINYINT;

    ALTER TABLE student ADD saddress VARCHAR(100) AFTER sname;

    ALTER TABLE student DROP COLUMN sscore ;

    ALTER TABLE student DROP saddress;

    ALTER TABLE suser MODIFY nii INT;

    复制一个表结构(字段),的两种方法:

    CREATE TABLE stu LIKE students;   只复制一个表结构(字段)

    CREATE TABLE stu2 SELECT * FROM students;   相当于复制一份。数据都在

  • 相关阅读:
    第四届图灵赛A题谷神的赌博游戏
    poj1562DFS
    数组-03. 冒泡法排序(20)
    数组-02. 打印杨辉三角(20)
    数组-01. 字符转换(15)
    循环-28. 求给定序列前N项和之六(15)
    循环-27. 求给定序列前N项和之五(15)
    循环-26. 求给定序列前N项和之四(15)
    循环-25. 求给定序列前N项和之三(15)
    循环-24. 求给定序列前N项和之二(15)
  • 原文地址:https://www.cnblogs.com/li-20151130/p/7455156.html
Copyright © 2011-2022 走看看