搜尋
首頁資料庫mysql教程3.mysql的中文问题,database级操作,表级操作,数据CRUD,分组操作,时间和日期,字符串相关函数,表的约束_MySQL



1 连接MYSQL服务器:mysql–uroot –p123456

  1. 查看中文问题

    show variables like 'character%';

    \

     

    2 修改mysql的字符集,退出mysql提示符界面:

    mysql -uroot -p--default_character_set=gbk;

    \

     

    3 数据库的操作:创建,查看,修改,删除

    *创建:

    创建一个名称为mydb1的数据库。

    createdatabase mydb1;

    创建一个使用utf-8字符集的mydb2数据库。

    create database mydb2character set utf8;

    创建一个使用utf-8字符集,并带校对规则的mydb3数据库。

    createdatabase mydb3 character set utf8 collate utf8_general_ci;

    *查看:

    显示所有数据库

    showdatabases;

    显示创建数据库的语句信息

    showcreate database mydb2;

    *修改:

    修改mydb1的字符集为gbk(不能修改数据库名)

    alterdatabase mydb1 character set utf8;

    *删除:

    删除数据库mydb2

    dropdatabase mydb1;

     

    4 表的操作:创建,查看,修改,删除

    usemydb2;

    *创建:

    根据实体类Person创建表person

    Person{

    intid;

    Stringname;

    }

    createtable person(

    idint,

    namevarchar(20)

    );

    mysql中的数据类型:

    bit1位 但可以指定位数,如:bit

    int2字节 可以指定最大位数,如:int 最大为4位的整数

    float2个字节 可以指定最大的位数和最大的小数位数,如:float 最大为一个5位的数,小数位最多2位

    double 4个字节 可以指定最大的位数和最大的小数位数,如:float 最大为一个6位的数,小数位最多4位

    char 必须指定字符数,如char(5) 为不可变字符 即使存储的内容为'ab',也是用5个字符的空间存储这个数据

    varchar 必须指定字符数,如varchar(5) 为可变字符 如果存储的内容为'ab',占用2个字符的空间;如果为'abc',则占用3个字符的空间

    text:大文本(大字符串)

    blob:二进制大数据 如图片,音频文件,视频文件

    date:日期 如:'1921-01-02'

    datetime:日期时间 如:'1921-01-02 12:23:43'

    timeStamp:时间戳,自动赋值为当前日期时间

     

    创建一个员工表

    createtable employee(id int,name varchar(20),sex bit,birthday date,salarydouble,entry_date date,resume text);

    *查看:

    查看所有的表:

    showtables;

    查看指定表的创建语句

    showcreate table employee;

    mysql表 名称区分大小写

    显示指定表的结构:

    descemployee;

    *删除:

    删除employee表

    droptable employee;

    *修改表:

    create table worker(id int,name varchar(20),sex bit,birthday date,salarydouble,entry_date date,resume text);

    增加一个字段:altertable worker add column height double;

    修改一个字段:altertable worker modify column height float;

    删除一个字段:altertable worker drop column height;

    更改表名:renametable employee to worker;

    修改表的字符集:altertable worker character set gbk;

     

    5 表数据的CRUD

    *C(create增加数据) Insert语句

    新建Employee表并表中添加一些记录

    createtable employee(

    idint,

    namevarchar(20),

    sexbit,

    birthdaydate,

    salarydouble,

    entry_datedate,

    resumetext

    );

     

    insertinto employee(id,name,sex,birthday,salary,entry_date,resume) values(1,'张三',1,'1983-09-21',15000,'2012-06-24','一个大牛');

    insertinto employee(id,name,sex,birthday,salary,entry_date,resume) values(2,'李四',1,'1984-09-21',10000,'2012-07-24','一个中牛');

    insertinto employee(id,name,sex,birthday,salary,entry_date,resume) values(3,'王五',0,'1985-09-21',7000,'2012-08-24','一个小牛');

    deletefrom employee where id=1

     

    createtable employee( id int,namevarchar(20),sex bit,birthday date,salary double,entry_date date,resume text);

     

    *U(update更新数据) Update语句

    将所有员工薪水都增加500元。

    updateemployee set salary=salary+500;

    将王五的员工薪水修改为10000元,resume改为也是一个中牛

    updateemployee set salary=10000,resume='也是一个中牛' where name='王五';

    *D(drop删除数据) Delete语句

    删除表中姓名为王五的记录。

    deletefrom employee where name='王五';

    删除表中所有记录。

    deletefrom employee; --可以有条件,但删除所有记录差了一点

    使用truncate删除表中记录。

    truncateemployee;--无条件效率高

     

    6 *R(Retrieve查找数据) Select语句

    准备环境:

    createtable student(

    idint,

    namevarchar(20),

    chineseint,

    englishint,

    mathint

    );

     

    insertinto student(id,name,chinese,english,math) values(1,'何东',80,85,90);

    insertinto student(id,name,chinese,english,math) values(2,'权筝',90,95,95);

    insertinto student(id,name,chinese,english,math) values(3,'何南',80,96,96);

    insertinto student(id,name,chinese,english,math) values(4,'叶坦',81,97,85);

    insertinto student(id,name,chinese,english,math) values(5,'何西',85,84,90);

    insertinto student(id,name,chinese,english,math) values(6,'丁香',92,85,87);

    insertinto student(id,name,chinese,english,math) values(7,'何北',75,81,80);

    insertinto student(id,name,chinese,english,math) values(8,'唐娇',77,80,79);

    insertinto student(id,name,chinese,english,math) values(9,'任知了',95,85,85);

    insertinto student(id,name,chinese,english,math) values(10,'王越',94,85,84);

     

    查询表中所有学生的信息。

    select* from student;

    查询表中所有学生的姓名和对应的英语成绩。

    selectname,english from student;

    过滤表中重复数据。

    selectenglish from student;

    selectDISTINCT english from student;

    selectDISTINCT english,name from student;

    selectenglish+chinese+math from student;

    selectenglish+chinese+math as 总分 from student;

    selectname,english+chinese+math as 总分 from student;

    在所有学生英语分数上加10分特长分。

    selectname,english+10 from student;

    统计每个学生的总分。

    selectenglish+chinese+math from student;

    使用别名表示学生分数

    selectname,english+chinese+math as 总分 from student;

    selectname,english+chinese+math 总分 from student;

    查询姓名为何东的学生成绩

    select* from student where name='何东';

    查询英语成绩大于90分的同学

    select* from student where english>90;

    查询总分大于250分的所有同学

    select* from student where english+chinese+math>250;

    查询英语分数在 85-95之间的同学。

    select* from student where english>=85 and english

    select* from student where english between 85 and 95;

    查询数学分数为84,90,91的同学。

    select* from student where math=84 or math=90 or math=91;

    select* from student where math in(84,90,91);

    查询所有姓何的学生成绩。

    select* from student where name like '何%';

    查询数学分>85,语文分>90的同学。

    select* from student where math>85 and chinese>90;

     

    对数学成绩排序后输出。

    select* from student order by math;

    对总分排序后输出,然后再按从高到低的顺序输出

    select* from student order by math+chinese+english desc;

    对姓何的学生成绩排序输出

    select* from student where name like '何%' order by math+chinese+english desc;

    selectname, math+chinese+english from student where name like '何%' order bymath+chinese+english desc;

    统计一个班级共有多少学生?

    selectcount(*) from student;

    统计数学成绩大于90的学生有多少个?

    selectcount(*) from student where math>90;

    统计总分大于250的人数有多少?

    selectcount(*) from student where math+chinese+english>250;

    统计一个班级数学总成绩?

    selectsum(math) from student;

    统计一个班级语文、英语、数学各科的总成绩

    selectsum(math), sum(chinese), sum(english) from student;

    统计一个班级语文、英语、数学的成绩总和

    selectsum(math+chinese+english)from student;

    selectsum(math)+sum(chinese)+sum(english) from student;

     

    求一个班级数学平均分?

    selectavg(math) from student;

    求一个班级总分平均分

    selectavg(math+chinese+english)from student;

    selectavg(math)+avg(chinese)+avg(english) from student;

    求班级最高分和最低分

    selectmax(math+chinese+english),min(math+chinese+english) from student;

    7 综合性练习:为学生表,增加一个班级列,然后训练分组查询

    查出各个班的总分,最高分

    准备环境

    给表添加一个字段:altertable student add column class_id int;

    更新表:

    updatestudent set class_id=1 where id

    updatestudent set class_id=2 where id>5;

    selectsum(math+chinese+english),max(math+chinese+english) from student group byclass_id;

    查询出班级总分大于1300分的班级ID

    selectclass_id from student group by class_id havingsum(math+chinese+english)>1300;

    selectclass_id from student where sum(math+chinese+english)>1300 group by class_id;

    note:where和group区别: 在wehre子句中不能使用分组函数

     

     

     

    8 时间和日期

    mysql>select year (now()), month(now()), day(now()) , date(now());

    +--------------+--------------+------------+-------------+

    |year (now()) | month(now()) | day(now()) | date(now()) |

    +--------------+--------------+------------+-------------+

    | 2014 | 9 | 7 | 2014-09-07 |

    +--------------+--------------+------------+-------------+

     

    selectdate_add(now(), INTERVAL 2 year) from dual;//增加两年

    selectcharset('name') employee;

    selectdate_add(now(), INTERVAL -1 day) 昨天, now() 今天, date_add(now(), INTERVAL +1 day) 明天;

     

    9 字符串相关函数

    selectconcat( charset('name'), 'aaaa') 自定义 from dual;

     

     

    10 表的约束  

    *定义主键约束 primarykey:不允许为空,不允许重复

    *定义主键自动增长 auto_increment

    *定义唯一约束 unique

    *定义非空约束 notnull

    *定义外键约束 constraintordersid_FK foreign key(ordersid) references orders(id)

    *删除主键:altertable tablename drop primary key ;

     

    createtable myclass

    (

    idINT(11) primary key auto_increment,

    namevarchar(20) unique

    );

    createtable student(

    idINT(11) primary key auto_increment,

    namevarchar(20) unique,

    passwdvarchar(15) not null,

    classidINT(11), #注意这个地方不要少逗号

    constraintstu_classid_FK foreign key(classid)references myclass(id)

    );

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
MySQL的許可與其他數據庫系統相比如何?MySQL的許可與其他數據庫系統相比如何?Apr 25, 2025 am 12:26 AM

MySQL使用的是GPL許可證。 1)GPL許可證允許自由使用、修改和分發MySQL,但修改後的分發需遵循GPL。 2)商業許可證可避免公開修改,適合需要保密的商業應用。

您什麼時候選擇InnoDB而不是Myisam,反之亦然?您什麼時候選擇InnoDB而不是Myisam,反之亦然?Apr 25, 2025 am 12:22 AM

選擇InnoDB而不是MyISAM的情況包括:1)需要事務支持,2)高並發環境,3)需要高數據一致性;反之,選擇MyISAM的情況包括:1)主要是讀操作,2)不需要事務支持。 InnoDB適合需要高數據一致性和事務處理的應用,如電商平台,而MyISAM適合讀密集型且無需事務的應用,如博客系統。

在MySQL中解釋外鍵的目的。在MySQL中解釋外鍵的目的。Apr 25, 2025 am 12:17 AM

在MySQL中,外鍵的作用是建立表與表之間的關係,確保數據的一致性和完整性。外鍵通過引用完整性檢查和級聯操作維護數據的有效性,使用時需注意性能優化和避免常見錯誤。

MySQL中有哪些不同類型的索引?MySQL中有哪些不同類型的索引?Apr 25, 2025 am 12:12 AM

MySQL中有四種主要的索引類型:B-Tree索引、哈希索引、全文索引和空間索引。 1.B-Tree索引適用於範圍查詢、排序和分組,適合在employees表的name列上創建。 2.哈希索引適用於等值查詢,適合在MEMORY存儲引擎的hash_table表的id列上創建。 3.全文索引用於文本搜索,適合在articles表的content列上創建。 4.空間索引用於地理空間查詢,適合在locations表的geom列上創建。

您如何在MySQL中創建索引?您如何在MySQL中創建索引?Apr 25, 2025 am 12:06 AM

toCreateAnIndexinMysql,usethecReateIndexStatement.1)forasingLecolumn,使用“ createIndexIdx_lastNameEnemployees(lastName); 2)foracompositeIndex,使用“ createIndexIndexIndexIndexIndexDx_nameOmplayees(lastName,firstName,firstName);” 3)forauniqe instex,creationexexexexex,

MySQL與Sqlite有何不同?MySQL與Sqlite有何不同?Apr 24, 2025 am 12:12 AM

MySQL和SQLite的主要區別在於設計理念和使用場景:1.MySQL適用於大型應用和企業級解決方案,支持高性能和高並發;2.SQLite適合移動應用和桌面軟件,輕量級且易於嵌入。

MySQL中的索引是什麼?它們如何提高性能?MySQL中的索引是什麼?它們如何提高性能?Apr 24, 2025 am 12:09 AM

MySQL中的索引是數據庫表中一列或多列的有序結構,用於加速數據檢索。 1)索引通過減少掃描數據量提升查詢速度。 2)B-Tree索引利用平衡樹結構,適合範圍查詢和排序。 3)創建索引使用CREATEINDEX語句,如CREATEINDEXidx_customer_idONorders(customer_id)。 4)複合索引可優化多列查詢,如CREATEINDEXidx_customer_orderONorders(customer_id,order_date)。 5)使用EXPLAIN分析查詢計劃,避

說明如何使用MySQL中的交易來確保數據一致性。說明如何使用MySQL中的交易來確保數據一致性。Apr 24, 2025 am 12:09 AM

在MySQL中使用事務可以確保數據一致性。 1)通過STARTTRANSACTION開始事務,執行SQL操作後用COMMIT提交或ROLLBACK回滾。 2)使用SAVEPOINT可以設置保存點,允許部分回滾。 3)性能優化建議包括縮短事務時間、避免大規模查詢和合理使用隔離級別。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器